diff --git a/src/data-structures/tree/avl-tree/README.md b/src/data-structures/tree/avl-tree/README.md new file mode 100644 index 00000000..ba21339e --- /dev/null +++ b/src/data-structures/tree/avl-tree/README.md @@ -0,0 +1,46 @@ +# AVL Tree + +In computer science, an AVL tree (named after inventors +Adelson-Velsky and Landis) is a self-balancing binary search +tree. It was the first such data structure to be invented. +In an AVL tree, the heights of the two child subtrees of any +node differ by at most one; if at any time they differ by +more than one, rebalancing is done to restore this property. +Lookup, insertion, and deletion all take `O(log n)` time in +both the average and worst cases, where n is the number of +nodes in the tree prior to the operation. Insertions and +deletions may require the tree to be rebalanced by one or +more tree rotations. + +Animation showing the insertion of several elements into an AVL +tree. It includes left, right, left-right and right-left rotations. + +![AVL Tree](https://upload.wikimedia.org/wikipedia/commons/f/fd/AVL_Tree_Example.gif) + +AVL tree with balance factors (green) + +![AVL Tree](https://upload.wikimedia.org/wikipedia/commons/a/ad/AVL-tree-wBalance_K.svg) + +### AVL Tree Rotations + +**Left-Left Rotation** + +![Left-Left Rotation](http://btechsmartclass.com/DS/images/LL%20Rotation.png) + +**Right-Right Rotation** + +![Right-Right Rotation](http://btechsmartclass.com/DS/images/RR%20Rotation.png) + +**Left-Right Rotation** + +![Left-Right Rotation](http://btechsmartclass.com/DS/images/LR%20Rotation.png) + +**Right-Left Rotation** + +![Right-Right Rotation](http://btechsmartclass.com/DS/images/RL%20Rotation.png) + +## References + +* [Wikipedia](https://en.wikipedia.org/wiki/AVL_tree) +* [Tutorials Point](https://www.tutorialspoint.com/data_structures_algorithms/avl_tree_algorithm.htm) +* [BTech](http://btechsmartclass.com/DS/U5_T2.html)