Download presentation

Published byGriffin Blois Modified over 2 years ago

1
**AVL Trees binary tree for every node x, define its balance factor**

balance factor of x = height of left subtree of x – height of right subtree of x balance factor of every node x is – 1, 0, or 1 log2 (n+1) <= height <= 1.44 log2 (n+2)

2
Example AVL Tree 1 -1 10 7 8 3 5 30 40 20 25 35 45 60

3
put(9) -1 10 1 1 7 40 -1 -1 1 45 3 8 30 Some balance factors on insert path change. When a bf changes from 0 to +1 or –1 the subtree height increases and we need to go further up the tree adjusting balance factors. -1 60 35 1 9 20 5 25

4
put(29) -1 10 1 1 7 40 -1 1 45 3 8 30 -1 -2 60 35 1 20 5 White node is the A node, nearest ancestor of newly inserted node whose bf becomes +2 or –2. RR imbalance => new node is in right subtree of right subtree of white node (node with bf = –2) -1 25 29

5
put(29) -1 10 1 1 7 40 -1 1 45 3 8 30 60 35 1 25 5 20 29 RR rotation.

6
Insert/Put Following insert/put, retrace path towards root and adjust balance factors as needed. Stop when you reach a node whose balance factor becomes 0, 2, or –2, or when you reach the root. The new tree is not an AVL tree only if you reach a node whose balance factor is either 2 or –2. In this case, we say the tree has become unbalanced.

7
A-Node Let A be the nearest ancestor of the newly inserted node whose balance factor becomes +2 or –2 following the insert. Balance factor of nodes between new node and A is 0 before insertion.

8
Imbalance Types RR … newly inserted node is in the right subtree of the right subtree of A. LL … left subtree of left subtree of A. RL… left subtree of right subtree of A. LR… right subtree of left subtree of A.

9
**LL Rotation Subtree height is unchanged.**

Before insertion. 1 A B BL BR AR h A B B’L BR AR After insertion. h+1 h B 2 B’L h+1 A 1 BR h AR h After rotation. Subtree height is unchanged. No further adjustments to be done.

10
**LR Rotation (case 1) Subtree height is unchanged.**

Before insertion. 1 A B A B After insertion. C C 2 B A -1 After rotation. B is a leaf prior to the insert. Subtree height is unchanged. No further adjustments to be done.

11
**LR Rotation (case 2) Subtree height is unchanged.**

BL CR AR h h-1 C’L C 1 A B BL CR AR h h-1 CL C C 2 B A -1 -1 BL h C’L h CR h-1 AR h 1 B is not a leaf prior to the insert, the insert takes place in the left subtree of C. Subtree height is unchanged. No further adjustments to be done.

12
**LR Rotation (case 3) Subtree height is unchanged.**

BL C’R AR h CL h-1 C -1 2 1 A B BL CR AR h h-1 CL C C A C’R h AR B BL CL h-1 1 Subtree height is unchanged. No further adjustments to be done.

13
**Single & Double Rotations**

LL and RR Double LR and RL LR is RR followed by LL RL is LL followed by RR

14
**LR Is RR + LL A C CL C’R AR h BL B After RR rotation. h-1 A B BL C’R**

2 After RR rotation. h-1 A B BL C’R AR h CL h-1 C -1 2 After insertion. C A C’R h AR B BL CL h-1 1 After LL rotation.

15
**Remove An Element Remove 8. 1 -1 10 7 8 3 5 30 40 20 25 35 45 60**

1 -1 10 7 8 3 5 30 40 20 25 35 45 60 Remove 5; no traceback needed. Remove 8.

16
**Remove An Element q Let q be parent of deleted node.**

2 -1 1 10 7 3 5 30 40 20 25 35 45 60 q No q => tree is empty following deletion. Let q be parent of deleted node. Retrace path from q towards root.

17
**New Balance Factor Of q Deletion from left subtree of q => bf--.**

Deletion from right subtree of q => bf++. New balance factor = 1 or –1 => no change in height of subtree rooted at q. New balance factor = 0 => height of subtree rooted at q has decreased by 1. New balance factor = 2 or –2 => tree is unbalanced at q. Initially q is the parent of the deleted node. At this time, one subtree of q is empty and the other is not empty. As q moves up towards the root, neither subtree of q is empty.

18
**Imbalance Classification**

Let A be an ancestor (q) of the deleted node whose balance factor has become 2 or –2 following a deletion. Deletion from left subtree of A => type L. Deletion from right subtree of A => type R. Type R => new bf(A) = 2. So, old bf(A) = 1. So, A has a left child B. bf(B) = 0 => R0. bf(B) = 1 => R1. bf(B) = –1 => R-1.

19
**R0 Rotation Subtree height is unchanged.**

Before deletion. 1 A B BL BR AR h A B BL BR A’R After deletion. h h-1 2 B A After rotation. BR h A’R h-1 BL 1 -1 Subtree height is unchanged. No further adjustments to be done. Similar to LL rotation.

20
**R1 Rotation Subtree height is reduced by 1.**

Before deletion. 1 A B BL BR AR h h-1 A B BL BR A’R After deletion. h h-1 1 2 B A After rotation. BR h-1 A’R BL h Subtree height is reduced by 1. Must continue on path to root. Similar to LL and R0 rotations.

21
**R-1 Rotation New balance factor of A and B depends on b.**

BL CR A’R h-1 CL C b -1 2 1 -1 A B BL CR AR h-1 h b CL C C A CR A’R h-1 B BL CL New balance factor of A and B depends on b. Subtree height is reduced by 1. Must continue on path to root. Similar to LR.

22
**Number Of Rebalancing Rotations**

At most 1 for an insert. O(log n) for a delete.

23
**Rotation Frequency Insert random numbers.**

No rotation … 53.4% (approx). LL/RR … 23.3% (approx). LR/RL … 23.2% (approx). Frequencies do not sum to 100% because of rounding errors in reporting frequencies to one decimal place.

Similar presentations

Presentation is loading. Please wait....

OK

Chapter 10 Efficient Binary Search Trees

Chapter 10 Efficient Binary Search Trees

© 2018 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Ppt on 2 stroke ic engines Ppt on event handling in javascript something happens Ppt on indian history and culture Ppt on building information modeling school Ppt on indian culture and festivals Ppt on observation method of data collection Ppt on travel agency management Ppt on ten sikh gurus Download ppt on my role model Ppt on eid festival images