avl trees (a few more slides)

21
AVL Trees (a few more slides) CSE 373 Data Structures Lecture 8.5

Upload: gazit

Post on 22-Jan-2016

25 views

Category:

Documents


0 download

DESCRIPTION

AVL Trees (a few more slides). CSE 373 Data Structures Lecture 8.5. Insertion in AVL Trees. Insert at the leaf (as for all BST) only nodes on the path from insertion point to root node have possibly changed in height - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: AVL Trees (a few more slides)

AVL Trees (a few more slides)

CSE 373

Data Structures

Lecture 8.5

Page 2: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

2

Insertion in AVL Trees

• Insert at the leaf (as for all BST)› only nodes on the path from insertion point to

root node have possibly changed in height› So after the Insert, go back up to the root

node by node, updating heights

› If a new balance factor (the difference hleft-hright) is 2 or –2, adjust tree by rotation around the node

Page 3: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

3

Insert in BST

Insert(T : reference tree pointer, x : element) : integer {if T = null then T := new tree; T.data := x; return 1;//the links to //children are nullcase T.data = x : return 0; //Duplicate do nothing T.data > x : return Insert(T.left, x); T.data < x : return Insert(T.right, x);endcase}

Page 4: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

4

Insert in AVL trees

Insert(T : reference tree pointer, x : element) : {if T = null then T := new tree; T.data := x; height := 0;case T.data = x : return ; //Duplicate do nothing T.data > x : return Insert(T.left, x); if ((height(T.left)- height(T.right)) = 2){ if (T.left.data > x ) then //outside case T = RotatefromLeft (T); else //inside case T = DoubleRotatefromLeft (T);} T.data < x : return Insert(T.right, x); code similar to the left caseEndcase T.height := max(height(T.left),height(T.right)) +1; return;}

Page 5: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

5

Example of Insertions in an AVL Tree

1

0

2

20

10 30

25

0

35

0

Insert 5, 40

Page 6: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

6

Example of Insertions in an AVL Tree

1

0

2

20

10 30

25

1

35

0

50

20

10 30

25

1

355

40

0

0

01

2

3

Now Insert 45

Page 7: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

7

Single rotation (outside case)

2

0

3

20

10 30

25

1

35

2

50

20

10 30

25

1

405

40

0

0

0

1

2

3

45

Imbalance35 45

0 0

1

Now Insert 34

Page 8: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

8

Double rotation (inside case)

3

0

3

20

10 30

25

1

40

2

50

20

10 35

30

1

405

45

0 1

2

3

Imbalance

45

0

1

Insertion of 34

35

34

0

0

1 25 340

Page 9: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

9

j

k

X Y

Z

Consider a validAVL subtree

AVL Insertion: Outside Case

h

hh

h+1

h+2

Page 10: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

10

j

k

XY

Z

Inserting into Xdestroys the AVL property at node j (h+2) - h

AVL Insertion: Outside Case

h

h+1 h

Becomes h + 2

Page 11: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

11

j

k

X Y Z

“Right rotation” done!(“Left rotation” is mirror symmetric)

Outside Case Completed

AVL property has been restored!

h

h+1

h

h+1

h+2

Page 12: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

12

j

k

X Y

Z

Consider a validAVL subtree

AVL Insertion: Inside Case

h

hh

h+1

h+2

Page 13: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

13

Inserting into Y destroys theAVL propertyat node j

j

k

XY

Z

AVL Insertion: Inside Case

h

h+1h

Becomes h + 2

Page 14: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

14

Consider the structureof subtree Y… j

k

XY

Z

AVL Insertion: Inside Case

h

h+1h

Page 15: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

15

j

k

X

V

Z

W

i

Y = node i andsubtrees V and W

AVL Insertion: Inside Case

h

h+1h

h or h-1

h+2

Page 16: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

16

j

k

X

V

Z

W

i

AVL Insertion: Inside Case

We will do a left-right “double rotation” . . .

Page 17: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

17

jk

X V ZW

i

Double rotation : second rotation

double rotation complete

Balance has been restored

hh h or h-1

h+1h+1

h+2

Page 18: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

18

Non-recursive insertion or the hacker’s delight

• Key observations;› At most one rotation› Balance factor: 2 bits are sufficient (-1 left,

0 equal, +1 right)› There is one node on the path of insertion,

say S, that is “critical”. It is the node where a rotation can occur and nodes above it won’t have their balance factors modified

Page 19: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

19

Non-recursive insertion

• Step 1 (Insert and find S):› Find the place of insertion and identify the last node S on the

path whose BF ≠ 0 (if all BF on the path = 0, S is the root).› Insert

• Step 2 (Adjust BF’s)› Restart from the child of S on the path of insertion. (note: all

the nodes from that node on on the path of insertion have BF = 0.)If the path traversed was left (right) set BF to –1 (+1) and repeat until you reach a null link (at the place of insertion)

Page 20: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

20

Non-recursive insertion (ct’d)

• Step 3 (Balance if necessary):› If BF(S) = 0 (S was the root) set BF(S) to the direction of

insertion (the tree has become higher)› If BF(S) = -1 (+1) and we traverse right (left) set BF(S) = 0

(the tree has become more balanced)› If BF(S) = -1 (+1) and we traverse left (right), the tree

becomes unbalanced. Perform a single rotation or a double rotation depending on whether the path is left-left (right-right) or left-right (right-left)

Page 21: AVL Trees (a few more slides)

1/29/02 AVL Trees addendum - Lecture 8.5

21

Non-recursive Insertion with BF’s

+1

0

+1

20

10 30

25

-1

40

0 ->1

50

20

10 35

30

-1

405

45

0 0

0

+1

45

0

1

Insertion of 3435

34

00->-1 25 340

Step 1 & 2

S

0

0

Step 3