For an AVL tree, the absolute value of balance factor for any node can't be greater than 1 i.e., each node must have a balance factor of either -1, 0 or 1. AVL tree is a self-balancing binary search tree in which each node maintains an extra information called as balance factor whose value is either -1, 0 or +1. The nature of AVL tree: If a binary search tree is highly balanced, it is an AVL tree. In an AVL Tree, balance_factor is an integer from the set {-1, 0, 1}. Left Rotation (LL) Figure 3 illustrates the left rotation on AVL tree. When the balance factor of a node is less than -1 or greater than 1, we perform tree rotations on the node. The insert and delete operation require rotations to be performed after violating the balance factor. The valid values of the balance factor are -1, 0, and +1. In this tutorial, you will understand the working of various operations of an avl-black tree with working code in C, C++, Java, and Python. If it is different from the three integers, the tree needs to be balanced using techniques we will discuss further in this article. These are described below. AVL tree rotations. Balance factor is the fundamental attribute of AVL trees; The balance factor of a node is defined as the difference between the height of the left and right subtree of that node. Instead of calculating heights of nodes, again and again, we store the current heights in each node. These rotations change the structure of the tree and make the tree balanced. There are four kind of rotations we do in the AVL tree. The balance factor of all nodes in the tree above: 1/ -1/ 0, which means that the absolute value of the height difference between the left and right subtrees does not exceed 1, which means the tree is balanced. Updating the height and getting the balance factor also takes constant time. Output: Preorder traversal of the constructed AVL tree is 30 20 10 25 40 50 Time Complexity: The rotation operations (left and right rotate) take constant time as only a few pointers are being changed there.