194 AVL Trees

Code39 Printer In JavaUsing Barcode generation for Java Control to generate, create ANSI/AIM Code 39 image in Java applications.

The first balanced binary search tree was the AVL tree (named after its discoverers, Adelson-Velskii and Landis), which illustrates the ideas that are thematic for a wide class of balanced binary search trees It is a binary search tree that has an additional balance condition Any balance condition must be easy to maintain and ensures that the depth of the tree is O(1og N) The simplest idea is to require that the left and right subtrees have the same height Recursion dictates that this idea apply to all nodes in the tree because each node is itself a root of some subtree This balance condition ensures that the depth of the tree is logarithmic However, it is too restrictive because inserting new items while maintaining balance is too difficult Thus the definition of an AVL tree uses a notion of balance that is somewhat weaker but still strong enough to guarantee logarithmic depth

Create Bar Code In JavaUsing Barcode encoder for Java Control to generate, create bar code image in Java applications.

The AVL tree was the first balanced binary search tree It has historical significance and also illustrates most of the ideas that are used in other schemes

Bar Code Reader In JavaUsing Barcode reader for Java Control to read, scan read, scan image in Java applications.

DEFINITION: An AVL tree is a binary search tree with the additional

Print Code 39 In Visual C#Using Barcode printer for VS .NET Control to generate, create Code-39 image in VS .NET applications.

balance property that, for any node in the tree, the height of the left and right subtrees can differ by at most 1 As usual, the height of an empty subtree is -1

Making Code 39 In .NET FrameworkUsing Barcode generator for ASP.NET Control to generate, create Code-39 image in ASP.NET applications.

Binary Search Trees

Code-39 Generator In Visual Studio .NETUsing Barcode creator for VS .NET Control to generate, create Code-39 image in Visual Studio .NET applications.

Figure 1921 Two binary search trees: (a) an AVL tree; (b) not an AVL tree (unbalanced nodes are darkened)

Making Code 39 In Visual Basic .NETUsing Barcode maker for Visual Studio .NET Control to generate, create Code 3/9 image in .NET framework applications.

Figure 1922 Minimum tree of height H

Barcode Maker In JavaUsing Barcode printer for Java Control to generate, create barcode image in Java applications.

1941 Properties

Data Matrix Printer In JavaUsing Barcode generator for Java Control to generate, create DataMatrix image in Java applications.

Every node in an AVL tree has subtrees whose heights differ by at most 1 An empty subtree has height -1

Barcode Drawer In JavaUsing Barcode drawer for Java Control to generate, create bar code image in Java applications.

The AVL tree has height at most roughly 44 percent greater than the minimum

EAN-13 Creator In JavaUsing Barcode encoder for Java Control to generate, create EAN / UCC - 13 image in Java applications.

Figure 1921 shows two binary search trees The tree shown in Figure 1921(a) satisfies the AVL balance condition and is thus an AVL tree The tree shown in Figure 1921(b), which results from inserting 1, using the usual algorithm, is not an AVL tree because the darkened nodes have left subtrees whose heights are 2 larger than their right subtrees If 13 were inserted, using the usual binary search tree insertion algorithm, node 16 would also be in violation The reason is that the left subtree would have height 1, while the right subtree would have height -1 The AVL balance condition implies that the tree has only logarithmic depth To prove this assertion we need to show that a tree of height H must have at least CHnodes for some constant C > 1 In other words, the minimum number of nodes in a tree is exponential in its height Then the maximum depth of an N-item tree is given by Iog,N Theorem 193 shows that every AVL tree of height H has many nodes

GS1 - 12 Generation In JavaUsing Barcode encoder for Java Control to generate, create UCC - 12 image in Java applications.

An AVL tree of height H has at least FH Fibonacci number (see Section 834)

Encode ANSI/AIM Code 93 In JavaUsing Barcode printer for Java Control to generate, create USS-93 image in Java applications.

I nodes, where Fiis the ith

Make ECC200 In .NET FrameworkUsing Barcode maker for .NET framework Control to generate, create DataMatrix image in VS .NET applications.

Theorem 193

UPC-A Creation In Visual Studio .NETUsing Barcode generation for ASP.NET Control to generate, create UPCA image in ASP.NET applications.

Let SH be the size of the smallest AVL tree of height H Clearly, So = 1 and S , = 2 Figure 1922 shows that the smallest AVL tree of height H must have subtrees of height H - 1 and H - 2 The reason is that at least one subtree has height H - 1 and the balance condition implies that subtree heights can differ by at most 1 These subtrees must themselves have the fewest number of nodes for their heights, so SH = SH - + SH - + 1 The proof can be completed by using an induction argument

Draw GS1 - 13 In .NETUsing Barcode encoder for ASP.NET Control to generate, create EAN-13 Supplement 5 image in ASP.NET applications.

Proof

Create GS1 - 12 In .NETUsing Barcode generator for VS .NET Control to generate, create UCC - 12 image in .NET applications.

From Exercise 88, F, = $I,/&, where ( = ( 1 + & ) / 2 = 1618 ConI sequently, an AVL tree of height H has at least (roughly) @H+'/& nodes Hence its depth is at most logarithmic The height of an AVL tree satisfies

DataMatrix Printer In C#.NETUsing Barcode generator for VS .NET Control to generate, create ECC200 image in Visual Studio .NET applications.

so the worst-case height is at most roughly 44 percent more than the minimum possible for binary trees The depth of an average node in a randomly constructed AVL tree tends to be very close to log N The exact answer has not yet been established analytically We do not even known whether the form is log N + C or ( 1 + E) log N + C, for some E that would be approximately 001 Simulations have been unable to demonstrate convincingly that one form is more plausible than the other A consequence of these arguments is that all searching operations in an AVL tree have logarithmic worst-case bounds The difficulty is that operations that change the tree, such as insert and remove,are not quite as simple as before The reason is that an insertion (or deletion) can destroy the balance of several nodes in the tree, as shown in Figure 1921 The balance must then be restored before the operation can be considered complete The insertion algorithm is described here, and the deletion algorithm is left for Exercise 1911 A key observation is that after an insertion, only nodes that are on the path from the insertion point to the root might have their balances altered because only those nodes have their subtrees altered This result applies to almost all the balanced search tree algorithms As we follow the path up to the root and update the balancing information, we may find a node whose

Barcode Creator In Visual C#Using Barcode drawer for VS .NET Control to generate, create barcode image in VS .NET applications.

Barcode Reader In Visual Studio .NETUsing Barcode scanner for .NET Control to read, scan read, scan image in .NET framework applications.