UNPKG

flo-ll-rb-tree

Version:

A simple left leaning red black tree implementation.

49 lines (36 loc) 1.19 kB
// Modified from https://www.geeksforgeeks.org/binary-tree-string-brackets/ import { LlRbTree, Node, LEFT, RIGHT } from "./tree.js"; /** * Function to construct string from binary tree */ function treeToStr<T>(nodeToStrFunc: (node: Node<T>) => string) { return (tree: LlRbTree<T>): string => { const root = tree.root!; let treeStr = ''; f(root); return treeStr; function f(node: Node<T> | undefined): void { if (node === undefined) { return; } treeStr += nodeToStrFunc(node); // if leaf node, then return if (node[LEFT] === undefined && node[RIGHT] == undefined) { return; } // left subtree if (node[LEFT] !== undefined) { treeStr += '('; f(node[LEFT]); treeStr += ')'; } // right subtree if (node[RIGHT] !== undefined) { treeStr += '['; f(node[RIGHT]); treeStr += ']'; } } } } export { treeToStr }