Post on 15-Jun-2015
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
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
Red Black Tree
InsertMisalkan: n = node-baru
p = parent dari ngp = parent dari parentu = uncle dari n
- Data baru n berwarna red
Copyright Sunarya D. Marwah
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
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
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
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
Red Black Tree
Keadaan tidak sederhanaAturan diatas berlaku untuk
keadaansetangkup (mirror), yaitu:
- (3a) n == p.right and p == gp.right.
- (3b) n == p.left and p == gp.right.
Copyright Sunarya D. Marwah
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
Red Black Tree
+71 Kasus 3b
Flip color
Copyright Sunarya D. Marwah
76
65
71
71
65 76
71
65 76
71
65
76
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
Red Black Tree
+82 Kasus 3a
Copyright Sunarya D. Marwah
71
65 76
79
82
71
65 79
8276
Red Black Tree
+73 Kasus 2
Copyright Sunarya D. Marwah
71
65 79
8276
71
65 79
8276
73 73
Red Black Tree
+84 Kasus 1b
Copyright Sunarya D. Marwah
71
65 79
8276
71
65 79
8276
73 73 84
Red Black Tree
+72 Kasus 3a
Copyright Sunarya D. Marwah
71
65 79
8273
71
65 79
8276
73 72 8484
72
76
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
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
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
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
Red Black Tree
Delete
Misalkan: v = node yang dihapusu = node penggantip = parent dari us = sibling dari uz = child dari s (z keponakan u)
Copyright Sunarya D. Marwah
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
Red Black Tree
Double black Node
Node v adalah node yang dihapusNode u adalah node pengganti v.Bila v.color = red, u.color = black.Bila v.color = black, u.color = double
black.
Copyright Sunarya D. Marwah
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
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
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
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
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
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
Red Black Tree
-65Node pengganti (u) ?
Copyright Sunarya D. Marwah
71
65
73
79
72 8276
77 84
Red Black Tree
-65 Kasus 3
Copyright Sunarya D. Marwah
71
73
79
72 8276
77 84
Double black
Red Black Tree
-65 Lanjutan
Copyright Sunarya D. Marwah
71
73
79
72 8276
77 84
Red Black Tree
-65 Hasil akhir:
Copyright Sunarya D. Marwah
71
73
79
72 8276
77 84
Red Black Tree
-76 Kasus 1 (sederhana)
Copyright Sunarya D. Marwah
71
73
79
72 8276
77 84
Red Black Tree
-76 Hasil akhir:
Copyright Sunarya D. Marwah
71
73
79
72 8277
84
Red Black Tree
-71 Kasus 1 (sederhana)
Copyright Sunarya D. Marwah
71
73
79
72 8277
84
Red Black Tree
-71 Hasil akhir
Copyright Sunarya D. Marwah
72
73
79
8277
84
Red Black Tree
-79
Copyright Sunarya D. Marwah
72
73
79
8277
84
Red Black Tree
-79 Kasus 2
Copyright Sunarya D. Marwah
72
73
77
82
84
Red Black Tree
-79 Hasil akhir:
Copyright Sunarya D. Marwah
72
73
77
82
84
Red Black Tree
-82
Copyright Sunarya D. Marwah
72
73
77
82
84
Red Black Tree
-82 Kasus 3
Copyright Sunarya D. Marwah
72
73
77
84
Red Black Tree
-82 Hasil akhir:
Copyright Sunarya D. Marwah
72
73
77
84
Red Black Tree
-73
Copyright Sunarya D. Marwah
72
73
77
84
Red Black Tree
-73 Kasus 2
Hasil akhir:
Copyright Sunarya D. Marwah
72
77
84
77
8472
77
8472
Red Black Tree
-84 Kasus 3
Copyright Sunarya D. Marwah
77
72 84
Red Black Tree
-84 Kasus 3
Hasil akhir:
Copyright Sunarya D. Marwah
77
72
77
72
Red Black Tree
-72
-77 NULL = Tree kosong !
Copyright Sunarya D. Marwah
77
72
77
77
Red Black Tree
Latihan Insert:
+13 +85 +15 +70 +20 +60 +30+50 +65 +80 +90 +40 +10 +55
Delete:-10 -60 -70
Copyright Sunarya D. Marwah
Red Black Tree
Insert: +10 s/d +13
Copyright Sunarya D. Marwah
Red Black Tree
Insert: +10 s/d +16
Copyright Sunarya D. Marwah
Red Black Tree
Insert: +10 s/d +24
Copyright Sunarya D. Marwah
Red Black Tree
Insert: +10 s/d +40
Copyright Sunarya D. Marwah
Red Black Tree
Jawaban Latihan Insert:
Copyright Sunarya D. Marwah
Red Black Tree
Jawaban Latihan Delete(10):
Copyright Sunarya D. Marwah
Red Black Tree
Jawaban Latihan Delete(60):
Copyright Sunarya D. Marwah
Red Black Tree
Jawaban Latihan Delete(60): (lanjutan)
Copyright Sunarya D. Marwah
Red Black Tree
Jawaban Latihan Delete(60): (lanjutan)
Copyright Sunarya D. Marwah
Red Black Tree
Jawaban Latihan Delete(70):
Copyright Sunarya D. Marwah
Red Black Tree
Jawaban Latihan Delete(70): (lanjutan)
Copyright Sunarya D. Marwah