UNPKG

@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
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>; }