Skip to main content

Section 8.16 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 8.16.1 illustrates the most unbalanced left-heavy tree possible under the new rules.
described in detail following the image
Image showing the most unbalanced left-heavy AVL trees for heights 0, 1, 2, and 3, adhering to the AVL balance factor rules. Each tree is labeled with nodes and balance factors: - For height 0, the tree contains a single node "A" with a balance factor of 0. - For height 1, the tree has "B" as the root with a balance factor of 1 and "A" as its left child with a balance factor of 0. - For height 2, the tree has "C" as the root with a balance factor of 1. "B" is the left child of "C" with a balance factor of 1, and "A" is the left child of "B" with a balance factor of 0. "D" is the right child of "C" with a balance factor of 0. - For height 3, the tree has "E" as the root with a balance factor of 1. "C" is the left child of "E" with a balance factor of 1. "B" is the left child of "C" with a balance factor of 1, and "A" is the left child of "B" with a balance factor of 0. "D" is the right child of "C" with a balance factor of 0. "G" is the right child of "E" with a balance factor of 1, and "F" is the left child of "G" with a balance factor of 0. This sequence demonstrates the maximum permissible left-heavy configurations in AVL trees while maintaining balance factors of -1, 0, or 1 at all nodes.
Figure 8.16.1. 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\text{.}\) More generally the pattern we see for the number of nodes in a tree of height h (\(N_h\)) is:
\begin{equation*} N_h = 1 + N_{h-1} + N_{h-2} \end{equation*}
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 \(i_{th}\) Fibonacci number is given by:
\begin{equation*} \begin{split} F_0 &= 0 \\ F_1 &= 1 \\ &\vdots \\ F_i &= F_{i-1} + F_{i-2} \text{ for all } i \ge 2 \end{split} \end{equation*}
An important mathematical result is that as the numbers of the Fibonacci sequence get larger and larger the ratio of \(F_i / F_{i-1}\) becomes closer and closer to approximating the golden ratio \(\Phi\) which is defined as \(\Phi = \frac{1 + \sqrt{5}}{2}\text{.}\) 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 \(F_i\) as \(F_i = \Phi^i/\sqrt{5}\text{.}\) If we make use of this approximation we can rewrite the equation for \(N_h\) as:
\begin{equation*} N_h = F_{h+1} - 1, h \ge 1 \end{equation*}
By replacing the Fibonacci reference with its golden ratio approximation we get:
\begin{equation*} N_h = \frac{\Phi^{h+2}}{\sqrt{5}} - 1 \end{equation*}
If we rearrange the terms, and take the base 2 log of both sides and then solve for \(h\) we get the following derivation:
\begin{equation*} \begin{split} \log{N_h+1} &= (h+2)\log{\Phi} - \frac{1}{2} \log{5} \\ h &= \frac{\log{N_h+1} - 2 \log{\Phi} + \frac{1}{2} \log{5}}{\log{\Phi}} \\ h &= 1.44 \log{N_h} \end{split} \end{equation*}
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(\log{N})\text{.}\)
You have attempted of activities on this page.