Skip to content

BinarySearchTree

Defined in: packages/data/src/tree/binary-search-tree.ts:45

An unbalanced binary search tree, ordered by a caller-supplied comparator.

Time complexity: O(h) per lookup, insert and delete, where h is the tree’s height. That is O(log n) only while the insertion order keeps it bushy — inserting already-sorted data degenerates it into a linked list and every operation becomes O(n). That is the caller’s problem to avoid, by choosing AvlTree instead, which pays a little more per insert to guarantee O(log n) worst case. This class exists for the case where the input is known to be unordered and the rebalancing is not worth it.

Iteration is in-order, so it is sorted, and is O(n) for the whole traversal.

T extends DefinedValue

The element type. Anything except undefined.

new BinarySearchTree<T>(iterable?, options?): BinarySearchTree<T>

Defined in: packages/data/src/tree/binary-search-tree.ts:53

Iterable<T, any, any>

BinarySearchTreeOptions<T>

BinarySearchTree<T>

readonly comparator: Comparator<T>

Defined in: packages/data/src/tree/binary-search-tree.ts:51

ISearchTree.comparator

get root(): IBinaryTreeNode<T> | null

Defined in: packages/data/src/tree/binary-search-tree.ts:62

The root, or null when empty. Exposed by ISearchTree for traversal.

IBinaryTreeNode<T> | null

ISearchTree.root

[iterator](): Iterator<T>

Defined in: packages/data/src/tree/binary-search-tree.ts:67

In-order, so ascending under the comparator.

Iterator<T>

ISearchTree.[iterator]


add(value): void

Defined in: packages/data/src/tree/binary-search-tree.ts:81

O(h). A value already held is not re-added.

T

void

ISearchTree.add


addAll(values): void

Defined in: packages/data/src/tree/binary-search-tree.ts:119

O(m·h) in the number of values.

Iterable<T>

void

ISearchTree.addAll


ceiling(query): T | undefined

Defined in: packages/data/src/tree/binary-search-tree.ts:178

The smallest element >= query. O(h).

T

T | undefined

ISearchTree.ceiling


clear(): void

Defined in: packages/data/src/tree/binary-search-tree.ts:75

Removes all elements from the collection.

void

ISearchTree.clear


count(): number

Defined in: packages/data/src/tree/binary-search-tree.ts:71

The number of elements in the collection.

A method, not a getter: its async counterpart needs a round trip to the backing store, and a member must have the same shape in both.

number

ISearchTree.count


delete(value): boolean

Defined in: packages/data/src/tree/binary-search-tree.ts:131

O(h).

T

boolean

ISearchTree.delete


difference(other): ISet<T>

Defined in: packages/data/src/tree/binary-search-tree.ts:266

O((n + m) log n). Ascending.

Iterable<T>

ISet<T>

ISearchTree.difference


floor(query): T | undefined

Defined in: packages/data/src/tree/binary-search-tree.ts:155

The largest element <= query. O(h).

T

T | undefined

ISearchTree.floor


has(value): boolean

Defined in: packages/data/src/tree/binary-search-tree.ts:126

O(h).

T

boolean

ISearchTree.has


intersection(other): ISet<T>

Defined in: packages/data/src/tree/binary-search-tree.ts:253

O(m log n). Ascending.

Iterable<T>

ISet<T>

ISearchTree.intersection


isDisjointFrom(other): boolean

Defined in: packages/data/src/tree/binary-search-tree.ts:321

O(m log n).

Iterable<T>

boolean

ISearchTree.isDisjointFrom


isSubsetOf(other): boolean

Defined in: packages/data/src/tree/binary-search-tree.ts:296

O(n log m).

Iterable<T>

boolean

ISearchTree.isSubsetOf


isSupersetOf(other): boolean

Defined in: packages/data/src/tree/binary-search-tree.ts:310

O(m log n).

Iterable<T>

boolean

ISearchTree.isSupersetOf


max(): T | undefined

Defined in: packages/data/src/tree/binary-search-tree.ts:150

The largest element. O(h).

T | undefined

ISearchTree.max


min(): T | undefined

Defined in: packages/data/src/tree/binary-search-tree.ts:145

The smallest element. O(h).

T | undefined

ISearchTree.min


range(from?, to?): IterableIterator<T>

Defined in: packages/data/src/tree/binary-search-tree.ts:206

Every element in [from, to), ascending. O(h + k) in the number yielded.

T

Inclusive lower bound. Unbounded when omitted.

T

Exclusive upper bound. Unbounded when omitted.

IterableIterator<T>

ISearchTree.range


symmetricDifference(other): ISet<T>

Defined in: packages/data/src/tree/binary-search-tree.ts:279

O((n + m) log n). Ascending.

Iterable<T>

ISet<T>

ISearchTree.symmetricDifference


union(other): ISet<T>

Defined in: packages/data/src/tree/binary-search-tree.ts:243

O((n + m) log n). Ascending.

Iterable<T>

ISet<T>

ISearchTree.union