@drozdik.m/avl-tree
Version:
Classic implementation of AVL tree with improvements like efficient search of nth item and iterator.
51 lines (50 loc) • 1.42 kB
TypeScript
import { IClonable } from "@drozdik.m/common-interfaces/IClonable";
export declare class AVLTreeNode<T> implements IClonable<AVLTreeNode<T>> {
parent: AVLTreeNode<T>;
left: AVLTreeNode<T>;
right: AVLTreeNode<T>;
value: T;
count: number;
depth: number;
sign: number;
constructor(value: T);
Update(): void;
UpdateChildrensParent(): void;
/**
* Returns number of nodes in this (sub)tree (including this one, thus minimum is 1)
* */
Count(): number;
/**
* Returns number of nodes in left subtree. Zero if left subtree is null.
* */
CountLeft(): number;
/**
* Returns number of nodes in right subtree. Zero if right subtree is null.
* */
CountRight(): number;
/**
* Updates count number from it's children
* */
UpdateCount(): void;
/**
* Returns depth of this nodes tree. Zero if no children.
* */
Depth(): number;
/**
* Returns depth of left subtree. Zero if left subtree is null.
* */
DepthLeft(): number;
/**
* Returns depth of right subtree. Zero if right subtree is null.
* */
DepthRight(): number;
/**
* Updates depth number from it's children
* */
UpdateDepth(): void;
/**
* Updates sign number from it's children
* */
UpdateSign(): void;
Clone(): AVLTreeNode<T>;
}