Top Banner
1 AVL Trees (10.2) CSE 2011 Winter 2011 March 21, 2022
23
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

1

AVL Trees (10.2)

CSE 2011

Winter 2011

April 18, 2023

Page 2: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

2

AVL Trees• AVL trees are

balanced.

• An AVL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at most 1.

88

44

17 78

32 50

48 62

2

4

1

1

2

3

1

1

An example of an AVL tree where the heights are shown next to the nodes

Page 3: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

3

Height of an AVL Tree

• Proposition: The height of an AVL tree T storing n keys is O(log n).

Proof: • Find n(h): the minimum number of internal nodes of

an AVL tree of height h• We see that n(1) = 1 and n(2) = 2• For h ≥ 3, an AVL tree of height h contains the root

node, one AVL subtree of height h1 and the other AVL subtree of height h2.

• i.e. n(h) = 1 + n(h1) + n(h2)

Page 4: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

4

Height of an AVL Tree (2)

• Knowing n(h-1) > n(h-2), we get n(h) > 2n(h-2)n(h) > 2n(h-2)n(h) > 4n(h-4)…n(h) > 2in(h-2i)

• Solving the base case we get: n(h) ≥ 2 h/2-1

• Taking logarithms: h < 2log n(h) +2

• Thus the height of an AVL tree is O(log n)

Page 5: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

5

Insertion in an AVL Tree• Insertion is as in a binary search tree.• Always done by expanding an external node.• Example: 44

17 78

32 50 88

48 62

54w

b=x

a=y

c=z

44

17 78

32 50 88

48 62

before insertion after insertion

Page 6: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

6

Insertion: rebalancing

• A binary search tree T is called balanced if for every node v, the height of v’s children differ by at most 1.

• Inserting a node into an AVL tree involves performing insertAtExternal(w, e) on T, which changes the heights of some of the nodes in T.

• If an insertion causes T to become unbalanced, we travel up the tree from the newly created node w until we find the first node z that is unbalanced.

• y = child of z with higher height (Note: y = ancestor of w)• x = child of y with higher height

(Note: x = ancestor of w or x = w)• Since z became unbalanced by an insertion in the subtree

rooted at its child y, height(y) = height(sibling(y)) + 2

Page 7: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

Insertion: restructuring

• Now to rebalance...

• To rebalance the subtree rooted at z, we must perform a restructuring.

• Two methods:1. cut/link restructuring (not in textbook)

– Given 7 integer keys 1, 2, 3, 4, 5, 6, and 7, how do we build a balanced BST?

2. tri-node restructuring (textbook)

7

Page 8: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

8

Cut/Link Restructure Algorithm

• Any tree that needs to be balanced can be grouped into 7 parts: x, y, z, and the 4 subtrees anchored at the children of those nodes (T0, T1, T2, T3).

• Any of the 4 subtrees can be empty (one dummy leaf).

88

44

17

7850

48

62

54T0

T1

T2

T3

y

x

Page 9: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

9

Cut/Link Restructure Algorithm

• Number the 7 parts by doing an inorder traversal.• x,y, and z are now renamed based upon their order within

the inorder traversal.

88

44

17

7850

48

62

54T0

T1

T2

T3

z (a)

y (b)

x (c)

12

34

56

7

Page 10: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

10

Cut/Link Restructure Algorithm

62

b4

• Now we can re-link these subtrees to the main tree.• Link in node 4 (b) where the subtree’s root was.

Page 11: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

11

Cut/Link Restructure Algorithm

• Link in nodes 2 (a) and 6 (c) as children of node 4.

62

b4

44 78

a c2 6

Page 12: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

12

Cut/Link Restructure Algorithm• Finally, link in subtrees 1 and 3 as the children of node 2,

and subtrees 5 and 7 as the children of 6.

62

y4

44 78

z x

17

T0

2 6

50

48 54

T1

3 588

T3

7T2

1

Page 13: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

13

Tri-node Restructuring

• To rebalance the subtree rooted at z, we must perform a restructuring.

• We rename x, y, and z to a, b, and c based on the order of the nodes in an in-order traversal (see the next slides for 4 possible mappings).

• z is replaced by b, whose children are now a and c whose children, in turn, consist of the 4 other subtrees formerly children of x, y, and z.

Page 14: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

14

Tri-node Restructuring (2)Single rotations

T0T1

T2

T3

c = xb = y

a = z

T0 T1 T2

T3

c = xb = y

a = zsingle rotation

T3T2

T1

T0

a = xb = y

c = z

T0T1T2

T3

a = xb = y

c = zsingle rotation

T0T1 T2

T3

Page 15: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

15

Tri-node Restructuring (3)Double rotations

double rotationa = z

b = xc = y

T0T2

T1

T3 T0

T2T3T1

a = zb = x

c = y

double rotationc = z

b = xa = y

T0T2

T1

T3 T0

T2T3 T1

c = zb = x

a = y

Page 16: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

16

Single/Double Rotations• let (a,b,c) be an inorder listing of x, y, z• perform the rotations needed to make b the topmost node of the

three

b=y

a=z

c=x

T0

T1

T2 T3

b=y

a=z c=x

T0 T1 T2 T3

c=y

b=x

a=z

T0

T1 T2

T3b=x

c=ya=z

T0 T1 T2 T3

case 1: single rotation(a left rotation about a)

case 2: double rotation(a right rotation about c, then a left rotation about a)

(other two cases are symmetrical)

Page 17: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

17

Restructuring Example

88

44

17 78

32 50

48 62

2

5

1

1

3

4

2

1

54

1

T0T2

T3

x

y

z

2

3

4

5

67

1

88

44

17

7832 50

48

622

4

1

1

2 2

3

154

1

T0 T1

T2

T3

x

y z

unbalanced...

...balanced

1

2

3

4

5

6

7

Page 18: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

18

Restructure AlgorithmAlgorithm restructure(x):

Input: A node x of a binary search tree T that has both a parent y and a grandparent zOutput: Tree T restructured by a rotation (either

single or double) involving nodes x, y, and z.

1. Let (a, b, c) be an inorder listing of the nodes x, y, and z, and let (T0, T1, T2, T3) be an inorder listing of the the four subtrees of x, y, and z, not rooted at x, y, or z.

2. Replace the subtree rooted at z with a new subtree rooted at b3. Let a be the left child of b and let T0, T1 be the left and right

subtrees of a, respectively.4. Let c be the right child of b and let T2, T3 be the left and right

subtrees of c, respectively.

Page 19: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

19

Cut/Link vs. Tri-node Restructuring

• Both methods give the same results.• Both methods have the same time complexity.• Time complexity = ?• Cut/link method:

– Advantage: no case analysis; more elegant.– Disadvantage: can be more code to write.

Page 20: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

20

Removal• First remove the node as in a BST.• Performing a removeExternal(w) can cause T to

become unbalanced.• Let z be the first unbalanced node encountered while

travelling up the tree from w. • y = child of z with higher height (y ancestor of w)• x = child of y with higher height, or either child if two

children of y have the same height.• Perform operation restructure(x) to restore balance at

the subtree rooted at z.• As this restructuring may upset the balance of another

node higher in the tree, we must continue checking for balance until the root of T is reached.

Page 21: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

21

Removal Example

88

44

17

78

32

50

48

621

4

1

2 2

3

154

1T0

T1

T2

T3

y

x

0

Oh no, unbalanced!

8817

78

50

48

62

1

1

2

23

1

541

T0

T2

T3

y

x44

4

z

0 Whew, balanced!

Choose either 78 or 50 as node x.

Page 22: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

22

Removal Example (2)

Whew, balanced!

88

17 78

50

48

621 1

4

2

3

154

1

T0 T1 T2

y

x

0

442

z

88

44

17

78

32

50

48

621

4

1

2 2

3

154

1T0

T1 T2 T3

z

y

x

0

Oh no, unbalanced!

Choose 50 as x.

Page 23: 1 AVL Trees (10.2) CSE 2011 Winter 2011 22 April 2015.

Next time …

• Heaps (8.3)

23