Presentation is loading. Please wait.

Presentation is loading. Please wait.

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.

Similar presentations


Presentation on theme: "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."— Presentation transcript:

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 log 2 (n+1) <= height <= 1.44 log 2 (n+2)

2 Example AVL Tree 00 0 0 1 0 0 1 0 1 10 7 83 1 5 30 40 20 25 35 45 60

3 put(9) 00 0 0 1 0 0 1 0 1 9 0 0 10 7 83 1 5 30 40 20 25 35 45 60

4 put(29) 00 0 0 1 0 0 1 0 1 10 7 83 1 5 30 40 20 25 35 45 60 29 0 -2 RR imbalance => new node is in right subtree of right subtree of white node (node with bf = – 2)

5 00 0 0 1 0 0 1 0 1 10 7 83 1 5 30 40 25 35 45 60 0 RR rotation. 20 0 29 put(29)

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. No further adjustments to be done. Before insertion. 1 0 A B BLBL BRBR ARAR hh h A B B’ L BRBR ARAR After insertion. h+1h h BA After rotation. BRBR h ARAR h B’ L h+1 0 0 1 2

10 LR Rotation (case 1) Subtree height is unchanged. No further adjustments to be done. Before insertion. 1 0 A B A B After insertion. C CA After rotation. B 0 2 00 0

11 LR Rotation (case 2) Subtree height is unchanged. No further adjustments to be done. C A CRCR h-1 ARAR h 1 0 A B BLBL CRCR ARAR h h 0 CLCL C A B BLBL CRCR ARAR h h C’ L h C B BLBL h h 1 2 0 0

12 LR Rotation (case 3) Subtree height is unchanged. No further adjustments to be done. 1 0 A B BLBL CRCR ARAR h h-1 h 0 CLCL C A B BLBL C’ R ARAR h h h CLCL h-1 C 2 C A C’ R h ARAR h B BLBL h CLCL h-1 10 0

13 Single & Double Rotations Single  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 B BLBL C’ R ARAR h h h CLCL h-1 C 2 After insertion. A C CLCL C’ R ARAR h h BLBL h B 2 After RR rotation. h-1 C A C’ R h ARAR h B BLBL h CLCL h-1 10 0 After LL rotation.

15 Remove An Element 00 0 0 1 0 0 1 0 1 10 7 83 1 5 30 40 20 25 35 45 60 Remove 8.

16 Remove An Element 00 0 2 0 0 1 0 1 10 7 3 1 5 30 40 20 25 35 45 60 Let q be parent of deleted node. Retrace path from q towards root. q

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. q

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. No further adjustments to be done. Similar to LL rotation. Before deletion. 1 0 A B BLBL BRBR ARAR hh h B A After rotation. BRBR h A’ R h-1 BLBL h 1 A B BLBL BRBR A’ R After deletion. hh h-1 0 2

20 R1 Rotation Subtree height is reduced by 1. Must continue on path to root. Similar to LL and R0 rotations. Before deletion. 1 1 A B BLBL BRBR ARAR hh-1 h B A After rotation. BRBR h-1 A’ R h-1 BLBL h 0 0 A B BLBL BRBR A’ R After deletion. hh-1 1 2

21 R-1 Rotation 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. 1 A B BLBL CRCR ARAR h-1 h b CLCL C A B BLBL CRCR A’ R h-1 CLCL C b 2 C A CRCR A’ R h-1 B BLBL CLCL 0

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).


Download ppt "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."

Similar presentations


Ads by Google