Short for: Binary Search Tree
Data structure is made up of nodes. Usually looks something like this:
type bstNode<'T> =
{ Value: 'T
Left: bstNode<'T> option
Right: bstNode<'T> option }
Rules
- Every node can have up to 2 children. No more.
-
Every node in the
.Left
branch has a lower value than.Value
-
Every node in the
.Right
branch has a higher (or equal) value than.Value
- Every node is immutable
Benefits
Main benefit is the speed of operations.
Operation | Average | Worst |
---|---|---|
Add | \(O(\log n)\) | \(O(n)\) |
Remove | \(O(\log n)\) | \(O(n)\) |
Find | \(O(\log n)\) | \(O(n)\) |
Terminology
-
A container of a single value and pointers to the next containers is called a “node”.
-
The nodes referenced by a node are called “child nodes” and “parent nodes”
-
The
D
node lacks parent, and is therefore called the “root node”. -
The
A
,C
,E
,G
nodes lacks children, and is therefore are called the “leaf nodes”.
graph TD
D==>B
D==>F
B==>A
B==>C
F==>E
F==>G