import {Color, TreeNode} from "./Node"; import {NodeFactory} from "./RedBlackTree"; export class TreeLevel { private parent: TreeNode; private readonly nodeFactory: NodeFactory; constructor(parent: TreeNode, nodeFactory: NodeFactory) { this.parent = parent; this.nodeFactory = nodeFactory; } left(value: T, color: Color, levelBuilder?: (level: TreeLevel) => void): void { const node = new TreeNode(value, color); this.parent.setLeftChild(node); if (levelBuilder != null) { levelBuilder(new TreeLevel(node, this.nodeFactory)); } } right(value: T, color: Color, levelBuilder?: (level: TreeLevel) => void): void { const node = new TreeNode(value, color) as TreeNode; this.parent.setRightChild(node); if (levelBuilder != null) { levelBuilder(new TreeLevel(node, this.nodeFactory)); } } }