AVL%20trees - PowerPoint PPT Presentation

About This Presentation
Title:

AVL%20trees

Description:

Need a new Delete algorithm. Goal: if tree is AVL before Delete, then tree is AVL after Delete. Step 1: do BST delete. This maintains the . BST property – PowerPoint PPT presentation

Number of Views:161
Avg rating:3.0/5.0
Slides: 22
Provided by: Trevo93
Category:

less

Transcript and Presenter's Notes

Title: AVL%20trees


1
AVL trees
2
Today
  • AVL delete and subsequent rotations
  • Testing your knowledge with interactive demos!

3
AVL tree
  • Is a binary search tree
  • Has an additional height constraint
  • For each node x in the tree, Height(x.left)
    differs from Height(x.right) by at most 1
  • I promise
  • If you satisfy the height constraint, then the
    height of the tree is O(lg n).
  • (Proof is easy, but no time! )

4
AVL tree
  • To be an AVL tree, must always
  • (1) Be a binary search tree
  • (2) Satisfy the height constraint
  • Suppose we start with an AVL tree, then delete as
    if were in a regular BST.
  • Will the tree be an AVL tree after the delete?
  • (1) It will still be a BST
  • (2) Will it satisfy the height constraint?
  • (Not covering insert, since you already did in
    class)

5
BST Delete breaks an AVL tree
7
7
Delete(9)
4
9
4
3
3
h(left) gt h(right)1 so NOT an AVL tree!
6
Replacing the height constraint with balance
factors
  • Instead of thinking about the heights of nodes,
    it is helpful to think in terms of balance
    factors
  • The balance factor bf(x) h(x.right) h(x.left)
  • bf(x) values -1, 0, and 1 are allowed
  • If bf(x) lt -1 or bf(x) gt 1 then tree is NOT AVL

7
Same example with bf(x), not h(x)
7
7
-2
-1
Delete(9)
4
9
4
-1
-1
0
3
3
0
0
bf lt -1 so NOT an AVL tree!
8
What else can BST Delete break?
  • Balance factors of ancestors

7
7
0
-1
-1
Delete(3)
9
4
9
4
0
-1
-1
0
0
3
0
9
Need a new Delete algorithm
  • Goal if tree is AVL before Delete, then tree is
    AVL after Delete.
  • Step 1 do BST delete.
  • This maintains the BST property, but cancause
    the balance factors of ancestors to be outdated!
  • Step 2 fix the height constraint and update
    balance factors.
  • Update any invalid balance factors affected by
    delete.
  • After updating them, they can be lt -1 or gt 1.
  • Do rotations to fix any balance factors that are
    too small or large while maintaining the BST
    property.
  • Rotations can cause balance factors to be
    outdated also!

10
Bad balance factors
  • Start with an AVL tree, then do a BST Delete.
  • What bad values can bf(x) take on?
  • Delete can reduce a subtrees height by 1.
  • So, it might increase or decrease h(x.right)
    h(x.left) by 1.
  • So, bf(x) might increase or decrease by 1.
  • This means
  • if bf(x) 1 before Delete, it might become 2.
    BAD.
  • If bf(x) -1 before Delete, it might become -2.
    BAD.
  • If bf(x) 0 before Delete, then it is still -1,
    0 or 1. OK.

2 cases
11
Problematic cases for Delete(a)
  • bf(x) -2 is just symmetric to bf(x) 2.
  • So, we just look at bf(x) 2.

x
x
2
-2
h
h2
a
a
(deleted)
12
Delete(a) 3 subcases for bf(x)2
  • Since tree was AVL before, bf(z) -1, 0 or 1
  • Case bf(z) -1 Case bf(z) 0 Case
    bf(z) 1

x
2
z
T1
-1
h
a
T2
T3
h
h1
h1
13
Fixing case bf(x) 2, bf(z) 0
  • We do a single left rotation
  • Preserves the BST property, and fixes bf(x) 2

x
z
2
-1
z
x
T3
T1
0
1
h
T2
T3
T2
T1
h1
14
Fixing case bf(x) 2, bf(z) 1
  • We do a single left rotation (same as last case)
  • Preserves the BST property, and fixes bf(x) 2

x
z
2
0
z
x
T3
T1
1
0
h
T2
T3
T2
T1
h
h1
15
Delete(a) bf(x)2, bf(z)-1 subcases
  • Case bf(z) -1 we have 3 subcases. (More
    details)
  • Case bf(y) 0 Case bf(y) -1
    Case bf(y) 1

x
x
2
2
z
z
T1
T1
-1
-1
y
y
y
a
T3
T3
0
a
a
-1
1
T21
T22
T21
T22
T21
T22
h-1
h
16
Double right-left rotation
  • All three subcases of bf(x)2, bf(z)-1 simply
    perform a double right-left rotation.

x
x
y
z
y
z
x
y
z
17
Delete subcases for bf(x)2, bf(z)-1
  • Case bf(y)0 double right-left rotation!

x
y
2
0
z
x
z
T1
-1
0
0
h
T1
T22
T21
T3
y
T3
0
h
T21
T22
h
18
Delete subcases for bf(x)2, bf(z)-1
  • Case bf(y)-1 double right-left rotation!

x
y
2
0
z
x
z
T1
-1
1
0
h
T1
T22
T21
T3
y
T3
-1
h
T21
T22
h-1
h
19
Delete subcases for bf(x)2, bf(z)-1
  • Case bf(y)1 double right-left rotation!

x
y
2
0
z
x
z
T1
-1
0
-1
h
T1
T22
T21
T3
y
T3
1
h
T22
T21
h-1
h
20
Recursively fixing balance factors
  • Idea start at the node we deleted, fix a
    problem, then recurse up the tree to the root.
  • At each node x, we update the balance factor
    bf(x) h(bf.right) - h(bf.left).
  • If bf(x) -2 or 2, we perform a rotation.
  • Then, we update the balance factors of every node
    that was changed by the rotation.
  • Finally, we recurse one node higher up.

21
Interactive AVL Deletes
  • Interactive web applet
Write a Comment
User Comments (0)
About PowerShow.com