Binary search tree
Commonly shortened as: BST
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
.Leftbranch has a lower value than.Value - Every node in the
.Rightbranch 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
Dnode lacks parent, and is therefore called the “root node”.The
A,C,E,Gnodes lacks children, and is therefore are called the “leaf nodes”.
graph TD
D==>B
D==>F
B==>A
B==>C
F==>E
F==>G