UNPKG

flo-ll-rb-tree

Version:

A simple left leaning red black tree implementation.

40 lines (30 loc) 1.03 kB
import { LlRbTree, LEFT, RIGHT, Node } from "../../src/index.js"; function route<T>( tree: LlRbTree<T>, datum: T, g: (node: Node<T>) => any): boolean { let node = tree.root; const compare = tree.compare; while (node) { g(node); const c = compare(datum, node.datum); if (c === 0) { if (tree.duplicatesAllowed) { const nodeLeft = node[LEFT]; const nodeRight = node[RIGHT]; if (nodeRight !== undefined && compare(datum, nodeRight.datum) === 0) { node = node[RIGHT]; continue; } if (nodeLeft !== undefined && compare(datum, nodeLeft.datum) === 0) { node = node[LEFT]; continue; } } return true; } node = node[c >= 0 ? RIGHT : LEFT]; } return false; } export { route }