Think Different Materi ASD 2014 pertemuan_19__

Red-Black Tree

DEFINISI
Red-Black Tree 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 3

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 3


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

Kasus 2

4

1
3

7

4

1

6
3

5

7
8

Left rotation

2
1

4
3

6
5

8

2

4

1
3

6
5

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.

Delete

Leaf nodes:

Single child nodes:

Top-Down Deletion
• Jika node yang didelete hitam  melanggar aturan
5
• Harus dipastikan node yang didelete adalah merah.
• Top-down traversal mulai root (untuk mencari node
yang didelete):
X: visited node
P
P: parent
X
A

S: sibling

S
B

C

D

Catatan: harus dipastikan node
merah yang didelete

Kasus yang timbul
• P merah
• X dan S hitam
P
X
A

S
B

C

D

• 2 kasus:
– 1. kedua anak X (A & B) adalah hitam
– 2. X punya sedikitnya 1 anak warna merah (A, B,
– atau keduanya merah)

Kasus 1: Kedua anak X warnanya
hitam

• Tergantung anak S (C & D):

– Kalau C & D hitam: hanya tinggal menukar
warnanya.
P

P

X
A

S
B

C

X
D

A

S
B

C

D

Kasus 1


Kalau anak S (D) Merah: lakukan single rotation
dan recolour

S
P

P

X
A

S
B

C

C

X
D

A

D

B

Kasus 1

• Kalau S (C) merah: lakukan double
rotation dan recolour
C

P
X
A

P

S
B

C

X

D
A

S
D

B

Kasus 2:Salah satu atau kedua
anak
X
warnanya
merah

Lakukan left rotation

S
P

P

X
A

S
B

C

C

X
D

A

D

B