The type of the key.
The type of the value.
The type of the raw data object (if using toEntryFn).
Gets whether the tree allows duplicate keys.
True if duplicates are allowed, false otherwise.
Gets whether the tree is in Map mode.
True if in Map mode, false otherwise.
Gets the sentinel NIL node (used in self-balancing trees like Red-Black Tree).
The NIL node.
Gets the root node of the tree.
The root node.
Gets the number of nodes in the tree.
The size of the tree.
Protected_clearProtected_clearProtected_clone(Protected) Helper for cloning. Performs a BFS and adds all nodes to the new tree.
The new, empty tree instance to populate.
Protected_createProtected_create(Protected) Creates a new node.
The newly created node.
Protected_DEFAULT_(Protected) Default callback function, returns the node's key.
The node.
The node's key or undefined.
Protected_dfsCallback type.
Function to call on nodes.
Optionalpattern: DFSOrderPatternTraversal order.
OptionalonlyOne: booleanStop after first match.
OptionalstartNode: Starting node.
OptionaliterationType: IterationTypeTraversal method.
OptionalincludeNull: booleanInclude nulls.
OptionalshouldVisitLeft: ((node: undefined | null | BinaryTreeNode<K, V>) => boolean)Predicate to traverse left.
OptionalshouldVisitRight: ((node: undefined | null | BinaryTreeNode<K, V>) => boolean)Predicate to traverse right.
OptionalshouldVisitRoot: ((node: undefined | null | BinaryTreeNode<K, V>) => boolean)Predicate to visit root.
OptionalshouldProcessRoot: ((node: undefined | null | BinaryTreeNode<K, V>) => boolean)Predicate to process root.
Array of callback results.
Protected_display(Protected) Recursive helper for toVisual.
The current node.
Print options.
Layout information for this subtree.
Protected_ensure(Protected) Converts a key, node, entry, or predicate into a standardized predicate function.
The item to convert.
A predicate function.
Protected_extractProtected_get(Protected) Gets the iterator for the tree (default in-order).
Optionalnode: null | BinaryTreeNode<K, V> = ...The node to start iteration from.
An iterator for [key, value] pairs.
Protected_is(Protected) Checks if an item is a predicate function.
The item to check.
True if it's a function.
Protected_key(Protected) Converts a key, node, or entry into a standardized [node, value] tuple.
A tuple of [node, value].
Protected_replace(Protected) Replaces a node in the tree with a new node, maintaining children and parent links.
The node to be replaced.
The node to insert.
The newNode.
Protected_set(Protected) Sets the root node and clears its parent reference.
The node to set as root.
Protected_setProtected_snapshotProtected_swap(Protected) Swaps the key/value properties of two nodes.
The destNode (now holding srcNode's properties).
Adds a new node to the tree.
True if the addition was successful, false otherwise.
Time O(log N), For BST, Red-Black Tree, and AVL Tree subclasses, the worst-case time is O(log N). This implementation adds the node at the first available position in a level-order (BFS) traversal. This is NOT a Binary Search Tree insertion. Time O(N), where N is the number of nodes. It must traverse level-by-level to find an empty slot. Space O(N) in the worst case for the BFS queue (e.g., a full last level).
Deletes a node from the tree.
An array containing deletion results (for compatibility with self-balancing trees).
Time O(log N), For BST, Red-Black Tree, and AVL Tree subclasses, the worst-case time is O(log N). This implementation finds the node, and if it has two children, swaps it with the rightmost node of its left subtree (in-order predecessor) before deleting. Time O(N) in the worst case. O(N) to find the node (getNode) and O(H) (which is O(N) worst-case) to find the rightmost node. Space O(1) (if getNode is iterative, which it is).
Ensures the input is a node. If it's a key or entry, it searches for the node.
The resolved node, or null/undefined if not found or input is null/undefined.
Gets the value associated with a key.
The key, node, or entry to get the value for.
OptionalstartNode: The node to start searching from (if not in Map mode).
OptionaliterationType: IterationType = ...The traversal method (if not in Map mode).
The associated value, or undefined.
Finds the leftmost node in a subtree (the node with the smallest key in a BST).
The type of the callback function.
The callback result for the leftmost node.
Gets the first node matching a predicate.
The key, node, entry, or predicate function to search for.
OptionalstartNode: The node to start the search from.
OptionaliterationType: IterationType = ...The traversal method.
The first matching node, or undefined if not found.
Gets all nodes matching a predicate.
The key, node, entry, or predicate function to search for.
OptionalonlyOne: booleanIf true, stops after finding the first match.
OptionalstartNode: The node to start the search from.
OptionaliterationType: IterationTypeThe traversal method.
An array of matching nodes.
Gets the Morris traversal predecessor (rightmost node in the left subtree, or node itself).
The node to find the predecessor for.
The Morris predecessor.
Finds the rightmost node in a subtree (the node with the largest key in a BST).
The type of the callback function.
The callback result for the rightmost node.
Gets the in-order successor of a node in a BST.
Optionalx: null | K | BinaryTreeNode<K, V>The node to find the successor of.
The successor node, or null/undefined if none exists.
Checks if a node matching the predicate exists in the tree.
OptionalkeyNodeEntryOrPredicate: The key, node, entry, or predicate to check for.
OptionalstartNode: The node to start the search from.
OptionaliterationType: IterationTypeThe traversal method.
True if a matching node exists, false otherwise.
Whether there exists an entry with the given value.
Value to test.
true if found; otherwise false.
Checks if the given item is a BinaryTreeNode instance.
True if it's a node, false otherwise.
Checks if the given item is a Range object.
The item to check.
True if it's a Range, false otherwise.
Checks if the given item is a "real" node (i.e., not null, undefined, or NIL).
True if it's a real node, false otherwise.
Checks if the given item is either a "real" node or null.
True if it's a real node or null, false otherwise.
Merges another tree into this one by adding all its nodes.
The tree to merge.
Searches the tree for nodes matching a predicate.
The type of the callback function.
The key, node, entry, or predicate function to search for.
OptionalonlyOne: boolean = falseIf true, stops after finding the first match.
Optionalcallback: C = ...A function to call on matching nodes.
OptionalstartNode: The node to start the search from.
OptionaliterationType: IterationType = ...Whether to use 'RECURSIVE' or 'ITERATIVE' search.
An array of results from the callback function for each matching node.
Time O(log N), For BST, Red-Black Tree, and AVL Tree subclasses, the worst-case time is O(log N). Performs a full DFS (pre-order) scan of the tree. Time O(N), as it may visit every node. Space O(H) for the call stack (recursive) or explicit stack (iterative), where H is the tree height (O(N) worst-case).
A general Binary Tree implementation.
Remarks
This class implements a basic Binary Tree, not a Binary Search Tree. The
addoperation inserts nodes level-by-level (BFS) into the first available slot.Example
Example