UNPKG

tstruct

Version:

Data structures & basic algorithms library

40 lines (39 loc) 1.35 kB
export interface IBinaryTreeNode<T> { val: T; left?: IBinaryTreeNode<T>; right?: IBinaryTreeNode<T>; parent?: IBinaryTreeNode<T>; parentSide(): "left" | "right"; copyTo(node?: IBinaryTreeNode<T>): void; height(): number; isBalanced(): boolean; } export declare class BinaryTreeNode<T> implements IBinaryTreeNode<T> { val: T; left?: IBinaryTreeNode<T>; right?: IBinaryTreeNode<T>; parent?: IBinaryTreeNode<T>; copyTo(node?: IBinaryTreeNode<T>): void; height(node?: IBinaryTreeNode<T>): number; parentSide(): "left" | "right"; isBalanced(): boolean; constructor(value: T, parent?: IBinaryTreeNode<T>, left?: IBinaryTreeNode<T>, right?: IBinaryTreeNode<T>); } export interface IBinaryTree<T> { readonly head?: IBinaryTreeNode<T>; add(value: T): void; toArray(): T[]; findNode(value: T): IBinaryTreeNode<T> | undefined; valueExists(value: T): boolean; remove(value: T): void; } export declare class BinaryTree<T> implements IBinaryTree<T> { protected _head: IBinaryTreeNode<T>; get head(): IBinaryTreeNode<T>; add(value: T): void; remove(value: T): void; private findBottomNode; toArray(): T[]; findNode(value: T, node?: IBinaryTreeNode<T>): IBinaryTreeNode<T>; valueExists(value: T): boolean; }