tstruct
Version:
Data structures & basic algorithms library
40 lines (39 loc) • 1.35 kB
TypeScript
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;
}