# when the left sub-tree of the tree is one level higher than that of the right sub-tree, then the balance factor is

### Mohammed

Guys, does anyone know the answer?

get when the left sub-tree of the tree is one level higher than that of the right sub-tree, then the balance factor is from screen.

## AVL Tree And Heap Data Structure In C++

This tutorial provides detailed explanation of AVL Tree and Heap Data Structure In C++ along with AVL Tree examples for better understanding.

## AVL Tree And Heap Data Structure In C++

Last Updated: June 13, 2022

**This Tutorial Provides a Detailed Explanation of AVL Trees and Heap Data Structure In C++ Along with AVL Tree Examples for Better Understanding:**

AVL Tree is a height-balanced binary tree. Each node is associated with a balanced factor which is calculated as the difference between the height of its left subtree and the right subtree.

The AVL tree is named after its two inventors i.e. G.M. Abelson-Velvety and E.M. Landis, and was published in 1962 in their paper “An algorithm for the organization of information”.

**=> Look For The Entire C++ Training Series Here.**

What You Will Learn:

AVL Tree In C++ AVL Tree Operations

#1) AVL Tree Insertion

#2) AVL Tree Deletion

AVL Tree Implementation

Applications Of AVL Trees

HEAP Data Structure In C++

Binary Heap C++

Operations On Binary Heap

Heap Data Structure Implementation

Applications Of Heaps

Conclusion Recommended Reading

## AVL Tree In C++

For the tree to be balanced, the balanced factor for each node should be between -1 and 1. If not the tree will become unbalanced.

**An Example AVL Tree is shown below.**

In the above tree, we can notice that the difference in heights of the left and right subtrees is 1. This means that it’s a balanced BST. As the balancing factor is 1, this means that the left subtree is one level higher than the right subtree.

If the balancing factor is 0, then it means that the left and right subtrees are at the same level i.e. they contain equal height. If the balancing factor is -1, then the left subtree is one level lower than the right subtree.

AVL tree controls the height of a binary search tree and it prevents it from becoming skewed. Because when a binary tree becomes skewed, it is the worst case (O (n)) for all the operations. By using the balance factor, AVL tree imposes a limit on the binary tree and thus keeps all the operations at O (log n).

### AVL Tree Operations

**The following are the operations supported by AVL trees.**

### #1) AVL Tree Insertion

Insert operation in the C++ AVL tree is the same as that of the binary search tree. The only difference is that in order to maintain the balance factor, we need to rotate the tree to left or right so that it doesn’t become unbalanced.

### #2) AVL Tree Deletion

Deletion operation also is performed in the same way as the delete operation in a Binary search tree. Again we need to rebalance the tree by performing some AVL Tree rotations.

### AVL Tree Implementation

**Following is the C++ program to demonstrate the AVL tree and its operations.**

// C++ program for AVL Tree

#includeusing namespace std;

// An AVL tree node class AVLNode { public: int key; AVLNode *left; AVLNode *right; int depth; };

//get max of two integers

int max(int a, int b){

return (a > b)? a : b;

}

//function to get height of the tree

int depth(AVLNode *n)

{ if (n == NULL) return 0; return n->depth; }

// allocate a new node with key passed

AVLNode* newNode(int key)

{

AVLNode* node = new AVLNode();

node->key = key; node->left = NULL; node->right = NULL;

node->depth = 1; // new node added as leaf

return(node); }

// right rotate the sub tree rooted with y

AVLNode *rightRotate(AVLNode *y)

{

AVLNode *x = y->left;

AVLNode *T2 = x->right;

// Perform rotation x->right = y; y->left = T2; // Update heights

y->depth = max(depth(y->left),

depth(y->right)) + 1;

x->depth = max(depth(x->left),

depth(x->right)) + 1;

// Return new root return x; }

// left rotate the sub tree rooted with x

AVLNode *leftRotate(AVLNode *x)

{

AVLNode *y = x->right;

AVLNode *T2 = y->left;

// Perform rotation y->left = x; x->right = T2; // Update heights

x->depth = max(depth(x->left),

depth(x->right)) + 1;

y->depth = max(depth(y->left),

depth(y->right)) + 1;

// Return new root return y; }

// Get Balance factor of node N

int getBalance(AVLNode *N)

{ if (N == NULL) return 0;

return depth(N->left) -

depth(N->right); }

//insertion operation for node in AVL tree

AVLNode* insert(AVLNode* node, int key) {

//normal BST rotation

if (node == NULL)

return(newNode(key));

if (key < node->key)

node->left = insert(node->left, key);

else if (key > node->key)

node->right = insert(node->right, key);

else // Equal keys not allowed

return node;

//update height of ancestor node

node->depth = 1 + max(depth(node->left), depth(node->right));

int balance = getBalance(node); //get balance factor

// rotate if unbalanced

// Left Left Case

if (balance > 1 && key < node->left->key)

return rightRotate(node);

// Right Right Case

if (balance < -1 && key > node->right->key)

return leftRotate(node);

// Left Right Case

if (balance > 1 && key > node->left->key)

{

node->left = leftRotate(node->left);

स्रोत : **www.softwaretestinghelp.com**

## AVL Tree

AVL Tree with Introduction, Asymptotic Analysis, Array, Pointer, Structure, Singly Linked List, Doubly Linked List, Circular Linked List, Binary Search, Linear Search, Sorting, Bucket Sort, Comb Sort, Shell Sort, Heap Sort, Merge Sort, Selection Sort, Counting Sort, Stack, Qene, Circular Quene, Graph, Tree, B Tree, B+ Tree, Avl Tree etc.

## AVL Tree

AVL Tree is invented by GM Adelson - Velsky and EM Landis in 1962. The tree is named AVL in honour of its inventors.

AVL Tree can be defined as height balanced binary search tree in which each node is associated with a balance factor which is calculated by subtracting the height of its right sub-tree from that of its left sub-tree.

Tree is said to be balanced if balance factor of each node is in between -1 to 1, otherwise, the tree will be unbalanced and need to be balanced.

## Balance Factor (k) = height (left(k)) - height (right(k))

If balance factor of any node is 1, it means that the left sub-tree is one level higher than the right sub-tree.

If balance factor of any node is 0, it means that the left sub-tree and right sub-tree contain equal height.

If balance factor of any node is -1, it means that the left sub-tree is one level lower than the right sub-tree.

An AVL tree is given in the following figure. We can see that, balance factor associated with each node is in between -1 and +1. therefore, it is an example of AVL tree.

## Complexity

Algorithm Average case Worst case

Space o(n) o(n)

Search o(log n) o(log n)

Insert o(log n) o(log n)

Delete o(log n) o(log n)

## Operations on AVL tree

Due to the fact that, AVL tree is also a binary search tree therefore, all the operations are performed in the same way as they are performed in a binary search tree. Searching and traversing do not lead to the violation in property of AVL tree. However, insertion and deletion are the operations which can violate this property and therefore, they need to be revisited.

SN Operation Description

1 Insertion Insertion in AVL tree is performed in the same way as it is performed in a binary search tree. However, it may lead to violation in the AVL tree property and therefore the tree may need balancing. The tree can be balanced by applying rotations.

2 Deletion Deletion can also be performed in the same way as it is performed in a binary search tree. Deletion may also disturb the balance of the tree therefore, various types of rotations are used to rebalance the tree.

## Why AVL Tree?

AVL tree controls the height of the binary search tree by not letting it to be skewed. The time taken for all operations in a binary search tree of height h is **O(h)**. However, it can be extended to **O(n)** if the BST becomes skewed (i.e. worst case). By limiting this height to log n, AVL tree imposes an upper bound on each operation to be **O(log n)** where n is the number of nodes.

## AVL Rotations

We perform rotation in AVL tree only in case if Balance Factor is other than **-1, 0, and 1**. There are basically four types of rotations which are as follows:

L L rotation: Inserted node is in the left subtree of left subtree of A

R R rotation : Inserted node is in the right subtree of right subtree of A

L R rotation : Inserted node is in the right subtree of left subtree of A

R L rotation : Inserted node is in the left subtree of right subtree of A

Where node A is the node whose balance Factor is other than -1, 0, 1.

The first two rotations LL and RR are single rotations and the next two rotations LR and RL are double rotations. For a tree to be unbalanced, minimum height must be at least 2, Let us understand each rotation

### 1. RR Rotation

When BST becomes unbalanced, due to a node is inserted into the right subtree of the right subtree of A, then we perform RR rotation, RR rotation is an anticlockwise rotation, which is applied on the edge below a node having balance factor -2

In above example, node A has balance factor -2 because a node C is inserted in the right subtree of A right subtree. We perform the RR rotation on the edge below A.

### 2. LL Rotation

When BST becomes unbalanced, due to a node is inserted into the left subtree of the left subtree of C, then we perform LL rotation, LL rotation is clockwise rotation, which is applied on the edge below a node having balance factor 2.

In above example, node C has balance factor 2 because a node A is inserted in the left subtree of C left subtree. We perform the LL rotation on the edge below A.

### 3. LR Rotation

Double rotations are bit tougher than single rotation which has already explained above. LR rotation = RR rotation + LL rotation, i.e., first RR rotation is performed on subtree and then LL rotation is performed on full tree, by full tree we mean the first node from the path of inserted node whose balance factor is other than -1, 0, or 1.

**Let us understand each and every step very clearly:**

State Action

A node B has been inserted into the right subtree of A the left subtree of C, because of which C has become an unbalanced node having balance factor 2. This case is L R rotation where: Inserted node is in the right subtree of left subtree of C

As LR rotation = RR + LL rotation, hence RR (anticlockwise) on subtree rooted at A is performed first. By doing RR rotation, node **A**, has become the left subtree of **B**.

## Balanced Binary Tree Questions and Answers

This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs) focuses on “Balanced Binary Tree”. 1. What will be the height of a balanced full binary tree with 8 leaves? a) 8 b) 5 c) 6 d) 4 2. The balance factor of a node in a binary tree is defined as ... Read more

## Balanced Binary Tree Multiple Choice Questions and Answers (MCQs)

« Prev Next »

This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs) focuses on “Balanced Binary Tree”.

1. What will be the height of a balanced full binary tree with 8 leaves?

a) 8 b) 5 c) 6 d) 4 View Answer advertisement

2. The balance factor of a node in a binary tree is defined as _____

a) addition of heights of left and right subtrees

b) height of right subtree minus height of left subtree

c) height of left subtree minus height of right subtree

d) height of right subtree minus one

View Answer

3. Figure below is a balanced binary tree. If a node inserted as child of the node R, how many nodes will become unbalanced?

a) 2 b) 1 c) 3 d) 0 View Answer

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate Now!

advertisement

4. A binary tree is balanced if the difference between left and right subtree of every node is not more than ____

a) 1 b) 3 c) 2 d) 0 View Answer

5. Which of the following tree data structures is not a balanced binary tree?

a) AVL tree b) Red-black tree c) Splay tree d) B-tree View Answer

Check this: Data Structure Books | Design & Analysis of Algorithms MCQ

advertisement

6. Which of following figures is a balanced binary tree?

a) b) c) d) View Answer

7. Balanced binary tree with n items allows the lookup of an item in ____ worst-case time.

a) O(log n) b) O(nlog 2) c) O(n) d) O(1) View Answer advertisement

8. Which of the following data structures can be efficiently implemented using height balanced binary search tree?

a) sets b) priority queue c) heap

d) both sets and priority queue

View Answer

9. Two balanced binary trees are given with m and n elements respectively. They can be merged into a balanced binary search tree in ____ time.

a) O(m+n) b) O(mn) c) O(m) d) O(mlog n) View Answer advertisement

10. Which of the following is an advantage of balanced binary search tree, like AVL tree, compared to binary heap?

a) insertion takes less time

b) deletion takes less time

c) searching takes less time

d) construction of the tree takes less time than binary heap

View Answer

11. AVL trees are more balanced than Red-black trees.

a) True b) False View Answer

12. The figure shown below is a balanced binary tree. If node P is deleted, which of the following nodes will get unbalanced?

a) U b) M c) H d) A View Answer

**Sanfoundry Global Education & Learning Series – Data Structure.**

To practice all areas of Data Structure, here is complete set of 1000+ Multiple Choice Questions and Answers.

« Prev - Data Structure Questions and Answers – Binary Search Tree

» Next - Self Balancing Binary Search Tree Multiple Choice Questions and Answers (MCQs)

**Next Steps:**

Get Free Certificate of Merit in Data Structure I

Participate in Data Structure I Certification Contest

Become a Top Ranker in Data Structure I

Take Data Structure I Tests

Chapterwise Practice Tests: Chapter 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Chapterwise Mock Tests: Chapter 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

**Related Posts:**

Buy Programming Books

Practice Design & Analysis of Algorithms MCQ

Practice Programming MCQs

Apply for Computer Science Internship

Apply for Information Technology Internship

advertisement

### Recommended Articles:

Randomized Binary Search Tree Multiple Choice Questions and Answers (MCQs)

Self Balancing Binary Search Tree Multiple Choice Questions and Answers (MCQs)

Binary Tree Operations Multiple Choice Questions and Answers (MCQs)

Binary Tree Sort Multiple Choice Questions and Answers (MCQs)

C++ Program to Create a Balanced Binary Tree of the Incoming Data

Expression Tree Multiple Choice Questions and Answers (MCQs)

C Program to Create a Balanced Binary Tree of the Incoming Data

2-3 Tree Multiple Choice Questions and Answers (MCQs)

Top Tree Multiple Choice Questions and Answers (MCQs)

Tango Tree Multiple Choice Questions and Answers (MCQs)

advertisement

**Additional Resources:**

Data Structure MCQ Questions

Tree Programs in C++

Tree in Java

Design & Analysis of Algorithms MCQ Questions

Automata Theory MCQ Questions

**Popular Pages:**

Network Theory MCQ Questions

Cloud Computing MCQ Questions

Electric Circuits MCQ Questions

Visual Basic MCQ Questions

IoT MCQ Questions

Guys, does anyone know the answer?