6.17. AVL Tree Performance

Before we proceed any further let’s look at the result of enforcing this new balance factor requirement. Our claim is that by ensuring that a tree always has a balance factor of -1, 0, or 1 we can get better Big-O performance of key operations. Let us start by thinking about how this balance condition changes the worst-case tree. There are two possibilities to consider, a left-heavy tree and a right-heavy tree. If we consider trees of heights 0, 1, 2, and 3, Figure 2 illustrates the most unbalanced left-heavy tree possible under the new rules.

../_images/worstAVL.png

Figure 2: Worst-Case Left-Heavy AVL Trees

Looking at the total number of nodes in the tree we see that for a tree of height 0 there is 1 node, for a tree of height 1 there is 1+1=2 nodes, for a tree of height 2 there are 1+1+2=4, and for a tree of height 3 there are 1+2+4=7. More generally the pattern we see for the number of nodes in a tree of height h (Nh) is:

Nh=1+Nh1+Nh2

This recurrence may look familiar to you because it is very similar to the Fibonacci sequence. We can use this fact to derive a formula for the height of an AVL tree given the number of nodes in the tree. Recall that for the Fibonacci sequence the ith Fibonacci number is given by:

F0=0F1=1Fi=Fi1+Fi2 for all i2

An important mathematical result is that as the numbers of the Fibonacci sequence get larger and larger the ratio of Fi/Fi1 becomes closer and closer to approximating the golden ratio Φ which is defined as Φ=1+52. You can consult a math text if you want to see a derivation of the previous equation. We will simply use this equation to approximate Fi as Fi=Φi/5. If we make use of this approximation we can rewrite the equation for Nh as:

Nh=Fh+31,h1

By replacing the Fibonacci reference with its golden ratio approximation we get:

Nh=Φh+251

If we rearrange the terms, take the base 2 log of both sides, and then solve for h, we get the following derivation:

logNh+1=(h+2)logΦ12log5h=log(Nh+1)2logΦ+12log5logΦh=1.44logNh

This derivation shows us that at any time the height of our AVL tree is equal to a constant (1.44) times the log of the number of nodes in the tree. This is great news for searching our AVL tree because it limits the search to O(logn).

You have attempted 1 of 1 activities on this page