8.14. Search Tree Analysis¶
With the implementation of a binary search tree now complete, we will do
a quick analysis of the methods we have implemented. Let’s first look at
the put
method. The limiting factor on its performance is the height
of the binary tree. Recall from the vocabulary section that the height
of a tree is the number of edges between the root and the deepest leaf
node. The height is the limiting factor because when we are searching
for the appropriate place to insert a node into the tree, we will need
to do at most one comparison at each level of the tree.
What is the height of a binary tree likely to be? The answer to this
question depends on how the keys are added to the tree. If the keys are
added in a random order, the height of the tree is going to be around
A perfectly balanced tree has the same number of nodes in the left
subtree as the right subtree. In a balanced binary tree, the worst-case
performance of put
is put
will need to do as it
searches for the proper place to insert a new node.
Unfortunately it is possible to construct a search tree that has height
put
method is

Figure 6: A skewed binary search tree would give poor performance¶
Now that you understand that the performance of
the put
method is limited by the height of the tree, you can
probably guess that other methods, get, in,
and del
, are limited
as well. Since get
searches the tree to find the key, in the worst
case the tree is searched all the way to the bottom and no key is found.
At first glance del
might seem more complicated, since it may need
to search for the successor before the deletion operation can complete.
But remember that the worst-case scenario to find the successor is also
just the height of the tree which means that you would simply double the
work. Since doubling is a constant factor it does not change worst case