MCS 275 Spring 2022
Emily Dumas
Course bulletins:
Let's make it so that BST()
is considered a valid, empty tree.
I added a module to the trees
sample code folder which can generate random trees. You'll use it in lab this week.
As a sample application of BST, we can make a class that stores a set of integers, supporting membership testing and adding new elements.
Compare alternatives:
To use BST
, you need to know about and work with Node
objects.
In contrast, IntegerSet
has an interface based directly on the values to be stored. It hides the fact that its implementation uses a BST.
Back to discussing binary trees (not necessarily BST).
For some purposes we need to visit every node in a tree and perform some action on them.
To do this is to traverse or walk the tree.
The three most-often used recursive traversals:
Note: They all visit left child before right child.
node, left, right
Typical use: Make a copy of the tree.
Insert the keys into an empty BST in this order to recreate the original tree.
left, right, node
Typical use: Delete the tree.
If you delete keys in postorder, then you will only ever be removing nodes without children.
left, node, right
Typical use: Turn a BST into a sorted list of keys.