DEFINISI
Red-Black Trees adalah Binary Search Tree dengan menyimpan data tambahan yaitu warna (Merah atau Hitam).
Syarat yang harus dipenuhi oleh sebuah Red-Black Trees antara lain:
1. Setiap Node harus mempunyai warna Merah atau
hitam
2. Root berwarna hitam
3. Setiap nill node diberi warna hitam
4. Jika sebuah node merah maka kedua anaknya harus
hitam
INSERT
Proses insert pada Red-Black Trees sama seperti
proses insert pada Binary Search Trees:
1. Cari posisi dari node baru dimulai dari root
2. Berikan warna
merah
kepada node tersebut.
3. Periksa apakah setelah dilakukan insert tree
Insert
• Kasus 1: node N menjadi node root. Warnanya
diubah menjadi hitam
Insert
• Kasus 2:Orang tua dari N, yaitu P berwarna hitam.
Tidak ada perubahan warna apapun karena sudah sesuai RBT
N
P
G
Insert
• Kasus 3: node N adalah node baru dan punya
parent (P) serta uncle (U) yang warnanya merah. Diganti warna P dan U menjadi hitam dan merubah G menjadi merah,tapi karena G adalah root diubah menjadi hitam.
Insert
• Kasus 4: Orang tua P merah namun paman U hitam
simpul baru N adalah anak kiri dari P dan P adalah anak kiri dari kakek G. Dilakukan right rotation
kemudian dilakukan perubahan warna P hitam
Insert
• Kasus 5: P berwarna merah namun U berwarna
hitam, juga N merupakan anak kanan dari P dan P adalah anak kiri dari G.Dilakukan left rotation dulu untuk baru dilakukan right rotation sesuai dengan kasus 4.
N
INSERT
Rotasi terdiri dari 2 macam
•
Left Rotation (Rotasi kiri)
INSERT
Insert(1) 1
Kasus 1 1
Insert(2)
2
Kasus 2
1
Insert(3)
Left rotation 1
2 3 2 3 1 2 1 3 Insert(4) 2 3 1 4
Kasus 2 2
Insert(8)
5 6
Left rotation 2
7 4 4 2 1 6 3 7 5 8
Parent is red-rebalance required Case 5:parent to right
Delete
• Proses delete pada RBT sama dengan proses delete
pada BST
• Jika yang didelete adalah node dengan warna
merah maka tree tersebut masih tetap RBT. Jika
node yang didelete memiliki 1 anak berwarna merah maka ganti warna anak tersebut menjadi hitam.
• Jika proses delete tersebut tidak menghasilkan
sebuah RBT maka perbaiki (Fixup). Hal ini terjadi karena proses delete dilakukan terhadap node yang berwarna hitam.
Delete Fixup
•
Kasus 1
•
Prekondisi:
–
X adalah left child dan black
–
Sibling dari x adalah red (parent black)
•
Yang dilakukan:
Delete Fixup
•
Kasus 2
–
Prekondisi:
• X adalah left child dan black • Sibling dari x adalah black
• Kedua anak dari Brother x black
–
Yang dilakukan:
Delete Fixup
•
Kasus 3
–
Prekondisi:
• X adalah left child dan black • Sibling dari x adalah black
• Right child dari brother x adalah black • Left child dari brother x adalah red
–
Yang dilakukan:
• Sibling dari x ubah menjadi red
Delete Fixup
•
Kasus 4
–
Prekondisi:
• X adalah left child dan black • Sibling dari x adalah black
• Right child dari brother x adalah red
–
Yang dilakukan:
• Ubah Sibling x menjadi warna dari parent x • Ubah warna parent x menjadi black