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
.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