1. Red Black Tree
Red Black Tree (RB-Tree)
Sebagai alternatif ‘balance tree’ bagi AVL-Tree, oleh
karena itu RB-Tree memiliki sifat sebagai Binary Serach
Tree.
RB-Tree, tidak sebaik AVL-Tree dalam hal ‘height-
balance ’, tetapi RB-Tree mempunyai keunggulan dalam
hal proses Insert dan Delete, dengan kata lain untuk
mempercepat proses Insert dan Delete, RB-Tree
mengorbankan kwalitas ‘height-balance ’.
Copyright Sunarya D. Marwah
2. Red Black Tree
Karakteristik RB-Tree
Setiap node berwarna red atau black
Setiap node red harus mempunyai anak black
Setiap jalur dari root ke semua leaf harus
memiliki jumlah node black yang sama.
Root berwarna black.
NULL dihitung sebagai black.
Copyright Sunarya D. Marwah
3. Red Black Tree
Insert
Misalkan: n = node-baru
p = parent dari n
gp = parent dari parent
u = uncle dari n
- Data baru n berwarna red
Copyright Sunarya D. Marwah
4. Red Black Tree
Keadaan sederhana (1):
- (1a) Bila n = root,
n-color = black, selesai.
- (1b) Bila p.color = black,
n.color tidak berubah, selesai.
Copyright Sunarya D. Marwah
5. Red Black Tree
Keadaan tidak sederhana (2)
- (2) If p.color == red:
- If u.color == red:
- Flip color: p.color = u.color = black.
gp.color = red.
Lanjutkan rebalancing pada gp
(bila belum selesai)
Copyright Sunarya D. Marwah
6. Red Black Tree
Keadaan tidak sederhana (3)
- (3a) If p.color == red:
If u.color == black:
- If n == p.left and p == gp.left:
Single rotation: right(gp);
Flip color: p.color = black.
gp.color = red;
Copyright Sunarya D. Marwah
7. Red Black Tree
Keadaan tidak sederhana (3)
- (3b) If p.color == red:
- If u.color == black:
- If n == p.right and p == gp.left:
Double rot. : left(p); right(gp);
Flip color: n.color = black.
gp.color = red;
Copyright Sunarya D. Marwah
8. Red Black Tree
Keadaan tidak sederhana
Aturan diatas berlaku untuk keadaan
setangkup (mirror), yaitu:
- (3a) n == p.right and p == gp.right.
- (3b) n == p.left and p == gp.right.
Copyright Sunarya D. Marwah
9. Red Black Tree
Contoh insert:
+65 +76 +71 +79 +82 +73 +84 +72 +77
+65 Kasus 1a.
+76 Kasus 1b.
Copyright Sunarya D. Marwah
76
65
65
10. Red Black Tree
+71 Kasus 3b
Flip color
Copyright Sunarya D. Marwah
76
65
71
71
65 76
71
65 76
71
65
76
11. Red Black Tree
+79 Kasus 2
Root harus black
Copyright Sunarya D. Marwah
71
65 76
79
71
65 76
79
71
65 76
79
12. Red Black Tree
+82 Kasus 3a
Copyright Sunarya D. Marwah
71
65 76
79
82
71
65 79
8276
13. Red Black Tree
+73 Kasus 2
Copyright Sunarya D. Marwah
71
65 79
8276
71
65 79
8276
73 73
14. Red Black Tree
+84 Kasus 1b
Copyright Sunarya D. Marwah
71
65 79
8276
71
65 79
8276
73 73 84
15. Red Black Tree
+72 Kasus 3a
Copyright Sunarya D. Marwah
71
65 79
8273
71
65 79
8276
73 72 8484
72
76
16. Red Black Tree
+77 Kasus 2
Rebalancing dilanjutkan pada gp
Copyright Sunarya D. Marwah
71
65 79
8273
71
65 79
8273
72 71 848476 76
77 77
17. Red Black Tree
+77 Kasus 3b
Rotasi
kanan
Copyright Sunarya D. Marwah
71
65 73
7972
71
65 79
8273
72 828476 76
77 77 84
18. Red Black Tree
Lanjutan +77 Rotasi kiri
Copyright Sunarya D. Marwah
71
65
73
79
72 8276
77 84
71
65 73
7972
8276
77 84
19. Red Black Tree
Hasil insert:
+65 +76 +71 +79 +82 +73 +84 +72 +77
Copyright Sunarya D. Marwah
71
65
73
79
72 8276
77 84
20. Red Black Tree
Delete
Misalkan: v = node yang dihapus
u = node pengganti
p = parent dari u
s = sibling dari u
z = child dari s (z keponakan u)
Copyright Sunarya D. Marwah
21. Red Black Tree
Keadaan sederhana (1):
- (1a) Bila u = leaf dan u.color = red,
delete u, selesai.
- (1b) Bila u != leaf dan u.color = red dan
u.color = v.color, selesai.
Bila u.color == black, keadaan menjadi tidak
sederhana
Copyright Sunarya D. Marwah
22. Red Black Tree
Double black Node
Node v adalah node yang dihapus
Node u adalah node pengganti v.
Bila v.color = red, u.color = black.
Bila v.color = black, u.color = double black.
Copyright Sunarya D. Marwah
23. Red Black Tree
Double black Node
Penandaan double black merupakan suatu
usaha secara sementara, memaksa bahwa seluruh
jalur memiliki jumlah black node yang sama.
Tetapi hal ini bukan merupakan penandaan yang
sah dan permanen, sehingga pengaturan RB-tree
(rotasi dan flip color) tetap harus dilakukan.
Copyright Sunarya D. Marwah
24. Red Black Tree
Keadaan tidak sederhana (2):
Bila node u (pengganti v) == black.
- Bila s.color = black dan ada satu z.color = red.
Lakukan perubahan sebagai berikut:
(2a) Single-rotation pada p, kemudian
flip-color z.color = black, s.color = red.
(2b) Double-rotation pada s, kemudian pada p,
kemudian z.color = black.
Copyright Sunarya D. Marwah
25. Red Black Tree
Keadaan tidak sederhana (3):
- Bila s.color = black dan z.color = black.
Lakukan perubahan seperti pada insert.
Flip-color s.color dari black menjadi red,
p.color dari red menjadi black, selesai.
Bila p.color dari black menjadi double-black,
perubahan berlanjut dengan p.
Copyright Sunarya D. Marwah
26. Red Black Tree
Keadaan tidak sederhana (4):
- Bila s.color = red.
Lakukan single-rotation pada p, flip-color
s.color dari red menjadi black, p.color dari
black menjadi red, maka kasus 4, dikonversi-
kan menjadi kasus 2 atau kasus 3 untuk
diselesaikan. Bila tidak, maka perubahan
berlanjut hingga p.
Copyright Sunarya D. Marwah
27. Red Black Tree
Latihan
Insert:
+65 +76 +71 +79 +82 +73 +84 +72 +77
Delete:
-65 -76 -71 -79 -73 -72
Copyright Sunarya D. Marwah
28. Red Black Tree
Hasil insert:
+65 +76 +71 +79 +82 +73 +84 +72 +77
A L G O R I T H M
Copyright Sunarya D. Marwah
71
65
73
79
72 8276
77 84
29. Red Black Tree
-65
Node pengganti (u) ?
Copyright Sunarya D. Marwah
71
65
73
79
72 8276
77 84
30. Red Black Tree
-65 Kasus 3
Copyright Sunarya D. Marwah
71
73
79
72 8276
77 84
Double black
31. Red Black Tree
-65 Lanjutan
Copyright Sunarya D. Marwah
71
73
79
72 8276
77 84
32. Red Black Tree
-65 Hasil akhir:
Copyright Sunarya D. Marwah
71
73
79
72 8276
77 84
33. Red Black Tree
-76 Kasus 1 (sederhana)
Copyright Sunarya D. Marwah
71
73
79
72 8276
77 84
34. Red Black Tree
-76 Hasil akhir:
Copyright Sunarya D. Marwah
71
73
79
72 8277
84
35. Red Black Tree
-71 Kasus 1 (sederhana)
Copyright Sunarya D. Marwah
71
73
79
72 8277
84
36. Red Black Tree
-71 Hasil akhir
Copyright Sunarya D. Marwah
72
73
79
8277
84