Tree is one of the most important data structure that is used for efficiently performing operations like insertion, deletion and searching of values. However, while working with large volume of data, construction of well balanced tree for sorting all data s not feasible. Thus only useful data is stored as a tree and actual volume of data being used constantly changes through insertion of new data and deletion of existing data. You will find in some cases where the NULL link to a binary tree to special links is called as threads and hence it is possible to perform traversals, insertions, deletions without using either stack or recursion. In this chapter you will learn about the Height balance tree which is also known as AVL tree. What is AVL Tree? AVL tree is a binary search tree in which the difference of heights of left and right sub trees of any node is less than or equal to one. The technique of balancing the height of binary trees was developed by Adelson, Velskii and Landi and hence given the short form as AVL tree or Balanced Binary Tree. An AVL tree can be defined as follows: Let T be a non empty binary tree with T L and T R as its left and right sub trees. Tree is height balanced if:

- T L and T R are height balanced
- h L – h R <= 1, where h L – h R are the heights of T L and T R

- When x has no children then, delete x
- When x has one child, let x’ becomes the child of x.
- Notice: x’ cannot have a child, since sub trees of T can differ in height by at most one :
- then replace the contents of x with the contents of x’
- then delete x’ (a leaf)

- Step 4: When x has two children,
- then find x’s successor z (which has no left child)
- then replace x’s contents with z’s contents, and
- delete z