AVL TREE
Why Use an AVL Tree
The reasoning to why we must balance the tree if it's not balanced is so that the time complexity for the operation (Search, Insert, Delete) will always be at O(log n) instead of the usual O(h) (where h is the height of the tree ) for the worst case scenario.Example of a skewed tree
For the tree above say that we want to search for the node 74 that we have to traverse the entire tree to find said note but if it's an AVL tree then
We only need to traverse 2 times compare to the original 5 times. This is why we use an AVL tree.
Balance Factor
Now the balance factor of an AVL tree is the difference pf the right sub tree and the left subtree. This balance factor is the one who decide when is the tree is imbalanced. So this factor is very important for AVL tree to kept it's balance. If the balance factor is 1 or -1 or 0 then the tree is balanced but if the balance factor is larger than 1 or less than -1 then the tree is not balance and will need to be balanced.
Balancing an AVL Tree
So how do we balance an AVL tree > Well first we need to learn the type of unbalance. There are 4 type of unbalance
Case 1 : (L-L) the deepest node is located at the left sub tree of the left child of T.
Case 2 : (R-R) the deepest node is located at the right sub tree of the right child of T.
Case 3 : (R-L) the deepest node is located at the right sub tree of the left child of T.
Case 4 : (L-R) the deepest node is located at the left sub tree of the right child of T.
Now to solve this imbalance we need to rotate the tree to solve this problem. Now there are 2 type of rotation simple rotation or double rotation.
1. Simple Rotation: This rotation is need for case 1 and 2
Right rotation (Case 1):

Left Rotation (Case 2):

2. Double Rotation: This is needed to resolve case 3 and 4
Left-Right Rotation (Case 3) :
Right-Left Rotation (Case 4):
B-Tree
In Computer Science B-Tree is a self-balancing Data Structure that maintain sorted data to allow operation such as search, sequential access, insertion, and deletion in O(log n) time. B-Tree generalize Binary Search Tree in that it allow a nodes that have more than 2 child. Unlike other self-balancing tree, B-Tree in suited for storage system that write and read large amount of data such as disk, it's commonly used in database and file system.
Property of B-Tree
A B-Tree of m order has these property :
- Every node has at most m children
- Every non leaf node (except the root node) has at least m/2 child
- The root has at least 2 children if it's not leaf node
- a non-leaf node that has k child will have at least k-1 keys
- All data are kept in sorted order
- All leaf node will be at the same height (bottom)
Example of a B-Tree with an order of 5, note that in most B-Tree the order will be more than 5 :
Exercise :
Create an AVL tree and a B-Tree with the following instruction for both :
- Insert : 5,6,7,0,4,3,8
- Delete : 3,4,8
1. AVL Tree



Comments
Post a Comment