This page contains various implementations of different Binary Search Trees (BSTs).
Simple BST (no balancing)
- bst.py (PY)
- Features: insert, find, delete_min, ASCII art
- bstsize.py (PY)
- Imports and extends bst.py
- Augmentation to compute subtree sizes
- bstsize_r.py
- Recursive version from recitation for computing subtree sizes
- Features: insert, find, rank, delete
AVL tree
- avl.py (PY)
- Imports and extends bst.py
- Features: insert, find, delete_min, ASCII art
Testing
Both bst.py and avl.py (as well as bstsize.py) can be tested interactively from a UNIX shell as follows:
- python bst.py 10 — do 10 random insertions, printing BST at each step
- python avl.py 10 — do 10 random insertions, printing AVL tree at each step
Alternatively, you can use them from a Python shell as follows:
>>> import bst
>>> t = bst.BST()
>>> print t
>>> for i in range(4):
... t.insert(i);
...
>>> print t
0
/\
1
/\
2
/\
3
/\
>>> t.delete_min()
>>> print t
1
/\
2
/\
3
/\
>>> import avl
>>> t = avl.AVL()
>>> print t
>>> for i in range(4):
... t.insert(i);
...
>>> print t
1
/ \
0 2
/\ /\
3
/\
>>> t.delete_min()
>>> print t
2
/ \
1 3
/\ /\