flo-ll-rb-tree
Version:
A simple left leaning red black tree implementation.
49 lines (36 loc) • 1.19 kB
text/typescript
// 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 }