import { N, B, F } from './baseType'; interface BinaryTreeNode { value: T; left: BinaryTreeNodeOrNull; right: BinaryTreeNodeOrNull; parent: BinaryTreeNodeOrNull; isRoot: () => B; hasParent: () => B; hasLeft: () => B; hasRight: () => B; hasChild: () => B; hasBothChild: () => B; isLeaf: () => B; } declare type BinaryTreeNodeOrNull = (BinaryTreeNode | null); interface BinaryTree { root: BinaryTreeNodeOrNull; createBTNode: (v: T) => BinaryTreeNode; insertAsLeft: (parent: BinaryTreeNode, current: T) => void; insertAsRight: (parent: BinaryTreeNode, current: T) => void; _preOrderTraverse: (cb: F, node: BinaryTreeNodeOrNull) => void; _inOrderTraverse: (cb: F, node: BinaryTreeNodeOrNull) => void; _postOrderTraverse: (cb: F, node: BinaryTreeNodeOrNull) => void; _levelTraverse: (cb: F, node: BinaryTreeNodeOrNull) => void; isEmpty: () => B; _height: (node: BinaryTreeNodeOrNull, h: N) => N; height: (node: BinaryTreeNodeOrNull) => N; deep: (node: BinaryTreeNodeOrNull) => N; minDeep: () => N; getLevelNode: (p: N) => BinaryTreeNode[]; isProper: () => B; vertexCount: () => N; isFull: () => B; isComplete: () => B; } declare type BinarySearchTreeOrder = 'preOrder' | 'inOrder' | 'postOrder' | 'level'; interface BinarySearchTreeNode extends BinaryTreeNode { key: N; value: T | null; left: BinarySearchTreeNodeOrNull; right: BinarySearchTreeNodeOrNull; parent: BinarySearchTreeNode; clone: () => BinarySearchTreeNode; 'operator<': (otherNode: BinarySearchTreeNode) => B; 'operator>': (otherNode: BinarySearchTreeNode) => B; 'operator===': (otherNode: BinarySearchTreeNode) => B; 'operator!==': (otherNode: BinarySearchTreeNode) => B; isLeft: () => B; isRight: () => B; sibling: () => BinarySearchTreeNodeOrNull; uncle: () => BinarySearchTreeNodeOrNull; } declare type BinarySearchTreeNodeOrNull = BinarySearchTreeNode | null; interface BinarySearchTree extends Pick, '_preOrderTraverse' | '_inOrderTraverse' | '_postOrderTraverse'> { root: BinarySearchTreeNodeOrNull; createBSTNode: (k: N, v: T) => BinarySearchTreeNode; insertAsLeft: () => Error; insertAsRight: () => Error; insert: (k: N, v: T) => Error | BinarySearchTreeNode; _insertNode: (n0: BinarySearchTreeNode, n1: BinarySearchTreeNode) => void; search: (k: N) => BinarySearchTreeNodeOrNull; traverse: (fn: F, order: BinarySearchTreeOrder) => void; min: () => T | undefined; max: () => T | undefined; findMinNode: (node: BinarySearchTreeNodeOrNull) => BinarySearchTreeNodeOrNull; findMaxNode: (node: BinarySearchTreeNodeOrNull) => BinarySearchTreeNodeOrNull; _remove: (node: BinarySearchTreeNodeOrNull, k: N) => BinarySearchTreeNodeOrNull; remove: (k: N) => void; } interface AVLTree extends BinarySearchTree { insert: (k: N, v: T) => Error | BinarySearchTreeNode; _insertNode: (n0: BinarySearchTreeNode, n1: BinarySearchTreeNode) => void; _rotationRR: (node: BinarySearchTreeNode) => BinarySearchTreeNode; _rotationLL: (node: BinarySearchTreeNode) => BinarySearchTreeNode; _rotationLR: (node: BinarySearchTreeNode) => BinarySearchTreeNode; _rotationRL: (node: BinarySearchTreeNode) => BinarySearchTreeNode; _connect34: (a: BinarySearchTreeNode, b: BinarySearchTreeNode, c: BinarySearchTreeNode, t0: BinarySearchTreeNodeOrNull, t1: BinarySearchTreeNodeOrNull, t2: BinarySearchTreeNodeOrNull, t3: BinarySearchTreeNodeOrNull) => BinarySearchTreeNode; rotateAt: (v: BinarySearchTreeNode) => BinarySearchTreeNode; remove: (k: N) => B; } interface RedBackTree extends BinarySearchTree { } interface SplayTree extends BinarySearchTree { splay: (v: BinarySearchTreeNodeOrNull) => BinarySearchTreeNodeOrNull; searchSplayTreeNode: (k: N) => BinarySearchTreeNodeOrNull; insertSplayTreeNode: (k: N, v: T) => Error | BinarySearchTreeNode; } interface BTreeNode { nodeList: []; childList: []; } declare type BTreeNodeOrNull = (BTreeNode | null); interface BTree { order: N; searchBTreeNode: (k: N) => BTreeNodeOrNull; insertBTreeNode: (k: N, v: T) => BTreeNode; remove: (k: N) => BTreeNode; resolveOverflow: (n: BTreeNode) => void; resolveUnderflow: (n: BTreeNode) => void; } export { BinaryTreeNode, BinaryTreeNodeOrNull, BinaryTree, BinarySearchTreeNode, BinarySearchTreeNodeOrNull, BinarySearchTree, AVLTree, SplayTree, RedBackTree, BTreeNode, BTree, };