Think Different Materi ASD 2014 pertemuan_19

Red-Black Trees

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.
2.
3.
4.
5.

Setiap Node harus mempunyai warna Merah atau
hitam
Root berwarna hitam
Setiap nill node diberi warna hitam
Jika sebuah node merah maka kedua anaknya harus
hitam
Tiap node, pada seluruh path dari node tersebut ke

descendant leaves mengandung jumlah node hitam
yang sama

Example

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
tersebut masih RB Trees. Jika tidak perbaiki
menjadi RB Trees (sesuai dengan syarat pada
slide awal)

Insert
• Kasus 1: node N menjadi node root. Warnanya
diubah menjadi hitam
N


N

Insert
• Kasus 2:Orang tua dari N, yaitu P berwarna hitam.
Tidak ada perubahan warna apapun karena sudah
sesuai RBT
G

P

N

U

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.

G

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
sebagai root dan G merah agar sesuai aturan RBT.

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
P

INSERT
Rotasi terdiri dari 2 macam

• Left Rotation (Rotasi kiri)
• Right Rotation (Rotasi kanan)

INSERT
Insert(1)

1

Insert(2)

1

Kasus 1

Kasus 2

1
2

Insert(3)


1
2

Left rotation

1

3
Insert(4)

2
1

4

1

2


3

3
Kasus 2

3

2

2
1

3

Ubah warna
root

4

2

1

3
4

INSERT
Insert(5)

2
1

Left rotation

3

2
1

2
1


3
4

4

2

1
3

4

1

5

3

5


6
Insert(7)

2
3

6

Left rotation

4

1

5

2

Kasus 2


4

3
5

5
Insert(6)

4

2
4

1
3

5

2

5

3
6

6
7

4

1

6
5

7

7

INSERT
Insert(8)

2
4

1
3

6
5

Parent is redrebalance required
Case 5:parent to right
of grandparent

7

2
1

6
3

5

7
8

4

1
3

Left rotation

2
1

4
3

6
5

8
4

2

7

6
5

8

7
8

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.
Catatan: proses perpindahan hanya melakukan
perpindahan data (key) tidak warna

Delete Fixup



Kasus 1
Prekondisi:
– X adalah left child dan black
– Sibling dari x adalah red (parent black)



Yang dilakukan:
– Parent dari x ubah menjadi red
– brother dari x ubah menjadi black
– Left Rotate

Delete Fixup

Delete Fixup


Kasus 2
– Prekondisi:




X adalah left child dan black
Sibling dari x adalah black
Kedua anak dari Brother x black

– Yang dilakukan:



Sibling dari x ubah menjadi red
Pindahkan x ke parent dari x

Delete Fixup

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
Left child dari brother x ubah menjadi black
Right rotate dari brother

Delete Fixup

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
Right child dari Sibling x ubah menjadi black
Left rotate dari parent x dan stop

Delete Fixup