import {AVLTreeNode} from '../data-structures'; import {IBST, IBSTNode} from './bst'; import {BinaryTreeDeletedResult, BinaryTreeNodeId} from '../types'; export interface IAVLTreeNode> extends IBSTNode { } export interface IAVLTree> extends IBST { add(id: BinaryTreeNodeId, val?: N['val'] | null): N | null | undefined remove(id: BinaryTreeNodeId, isUpdateAllLeftSum?: boolean): BinaryTreeDeletedResult[] balanceFactor(node: N): number updateHeight(node: N): void balancePath(node: N): void balanceLL(A: N): void balanceLR(A: N): void balanceRR(A: N): void balanceRL(A: N): void }