1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least...
-
Upload
april-james -
Category
Documents
-
view
214 -
download
0
Transcript of 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least...
![Page 1: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/1.jpg)
1
E
R
S X
C
DB
R
UO
![Page 2: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/2.jpg)
2
Setting Up Deletion• As with binary search trees, we can always delete a node that has at
least one external child• If the key to be deleted is stored at a node that has no external
children, we move there the key of its inorder predecessor (or successor), and delete that node instead
• Example: to delete key 7, we move key 5 to node u, and delete node v
E
R
S X
C
DB
R
UO
![Page 3: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/3.jpg)
3
Deletion Algorithm• Remove v with a removeAboveExternal operation on
a leaf child w of v
• If v was red or u is red, color u black. Else, color u double black
While a double black edge exists, perform one of the following actions ..
v
v
u u
u u
w
![Page 4: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/4.jpg)
4
How to Eliminate the Double Black Edge
• The intuitive idea is to perform a “color compensation’’
• Find a red edge nearby, and change the pair (red , double black) into (black , black)
• As for insertion, we have two cases:
– restructuring, and
– recoloring (demotion, inverse of promotion)
• Restructuring resolves the problem locally, while recoloring may propagate it two levels up
• Slightly more complicated than insertion, since two restructurings may occur (instead of just one)
![Page 5: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/5.jpg)
5
Case 1: black sibling with a red child
• If sibling is black and one of its children is red, perform a restructuring
v
p
s
v
p
v
p
s
zv
z
p s
z
z
![Page 6: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/6.jpg)
6
(2,4) Tree Interpretation
30
20c
b
10
40r
a
40
... 20 ...... ...
3010
30
20
x
y
10
40r
z2010
40
... 30 ...... ...
![Page 7: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/7.jpg)
7
Case 2: black sibling with black childern
• If sibling and its children are black, perform a recoloring
• If parent becomes double black, continue upward
v s
p
v
p
s
v
p
s v
p
s
![Page 8: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/8.jpg)
8
(2,4) Tree Interpretation
30
20
x
y40
r
40
10 30 ...
20
10
...
30
20
x
y40
r
40
10 ...
20
10
...
30
![Page 9: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/9.jpg)
9
Case 3: red sibling
• If sibling is red, perform an adjustment
• Now the sibling is black and one the of previous cases applies
• If the next case is recoloring, there is no propagation upward (parent is now red)
v
p
s
v
p
s
![Page 10: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/10.jpg)
10
How About an Example?6
4 8
2 5 9
6
4 8
2 5 7
7
Remove 9
![Page 11: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/11.jpg)
11
Example• What do we know?
– Sibling is black with black children
• What do we do?
– Recoloring
6
4
2 5 7
6
4 8
2 5 7
8
![Page 12: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/12.jpg)
12
Example• Delete 8
no double black6
4 8
2 5 7
6
4 7
2 5
![Page 13: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/13.jpg)
13
ExampleDelete 7
• Restructuring
4
2 5
6
4 7
2 5
6
4
62
5
![Page 14: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/14.jpg)
14
Example
![Page 15: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/15.jpg)
15
Example
![Page 16: 1. 2 Setting Up Deletion As with binary search trees, we can always delete a node that has at least one external child If the key to be deleted is stored.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649eda5503460f94be92af/html5/thumbnails/16.jpg)
16
Summary of Red-Black Trees• An insertion or deletion may cause a local perturbation (two
consecutive red edges, or a double-black edge)
• The perturbation is either
– resolved locally (restructuring), or
– propagated to a higher level in the tree by recoloring (promotion or demotion)
• O(1) time for a restructuring or recoloring
• At most one restructuring per insertion, and at most two restructurings per deletion
• O(log N) recolorings
• Total time: O(log N)