6.006 | Fall 2011 | Undergraduate

# Introduction to Algorithms

## Binary Search Trees

### 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
/\ /\
``````

## Course Info

Fall 2011
##### Learning Resource Types
Lecture Videos
Recitation Videos
Problem Sets with Solutions
Exams with Solutions
Programming Assignments with Examples
Lecture Notes