download

Matakuliah
Tahun
Versi
: T0026/Struktur Data
: 2005
: 1/1
Pertemuan 15
Red-Black Tree (RBT)
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• Mahasiswa dapat menghasilkan program
modular untuk mengimplementasikan ADT
Red-Black tree
2
Outline Materi
•
•
•
•
•
•
Pengertian dan kegunaan RBT
Contoh Red-Black Tree
Operasi pada RBT
inserting data RBT
Deleting data RBT
contoh program implementasi
3
Karakteristik (1)
1. Memiliki
karakteristik BST
2. Node memiliki
warna, red atau
black
– Root selalu black
– Node eksternal
selalu black
Node eksternal
Node eksternal
boleh tidak
ditulis
4
Karakteristik (2)
3. Anak dari node
red harus black
tidak ada 2
node red yg
berurutan
4. Black-height
yang sama pd
kedua simple path
dari suatu node
ke leaf
black-height (bh) :
Jumlah node black pd
suatu simple path
bh(node 2) = 1
bh(node 11) = 2
5
Insert
• Node baru diberi
warna RED
• Hasil insert harus
tetap memenuhi
karakteristik tree RB
• Pemeriksaan node
setelah insert
dilakukan berurutan
dari node baru ke
node-node lain
(ancestor) ke arah
Root
6
Insert : Kasus 1
Y
Y
a
c
X
a
X
atau
b
b
c
• Jika parent node baru BLACK, tree masih
memenuhi persyaratan tree R-B
7
Insert : Kasus 2
Z
X
Y
d
a
Y
Y
X
c
X
a
a
b
Z
b
c
b
Z
d
c
d
• Node baru (X atau Z) dan parent berurutan
berwarna RED
• Supaya memenuhi persayaratan tree R-B,
dilakukan rotasi tunggal dan pergantian warna
8
Insert : Kasus 3
Z
X
Y
d
a
X
Z
X
a
Y
b
a
c
Z
b
c
d
Y
d
b
c
• Node baru (Y) dan parent berurutan berwarna
RED
• Supaya memenuhi persayaratan tree R-B,
dilakukan rotasi ganda dan pergantian warna
9
Insert : Kasus 4
Z
Y
Z
Y
d
c
a
d
c
X
X
X
Y
a
b
b
X
b
a
Y
a
Z
b
c
Z
d
c
d
• Node baru dan parent, berurutan RED
• Perubahan RED-BLACK pada parent dan uncle
• Perubahan BLACK-RED pada grandparent
10
Contoh Insert : Insert A, L, G, O ,
R, I, T, H, M
A
A
A menjadi Root,
harus BLACK,
perubahan warna
A
G
L
A
L
G
Tree dirotasi ganda, kemudian diikuti perubahan
warna Root
A
L
11
Lanjutan
A
A
L
A
O
L
O
L
A
O
G
O
L
R
R
I
G
L
O
R
I
G
A
G
G
G
A
R
O
L
I
R
T
Tree dirotasi tunggal (kasus 2)
12
Lanjutan
G
G
Rotasi tunggal
A
O
A
L
R
O
I
I
T
H
R
T
L
H
A
O
I
H
I
G
G
Perubahan
warna
A
T
L
M
O
I
R
H
Rotasi
ganda
A
R
T
L
G
O
H L
R
T
M
M
13
Delete
• Delete pada tree R-B
menyerupai BST
• Pada BST :
Jika node 56 dihapus, isi child
(3) di-copy ke posisi 56 yg
dihapus, dan node child
dihapus
56
3
3
3
• Pada tree R-B :
– Hapus node BLACK
akan menyebabkan
keseimbangan blackheight terganggu
– Token double-black
‘menggantikan’ posisi
BLACK yg dihapus
– Proses thd token,
mengikuti kasus A, B
atau C
14
Delete (lanjutan)
• Token double-black pada node RED: mengubah
warna node menjadi BLACK, dan token akan
dihapus
• Token double-black pada Root (BLACK): dapat
dihapus, tidak ada pengaruh
• Delete leaf RED, langsung dihapus karena tidak
mempengaruhi keseimbangan black-height
15
Delete : Kasus A
X
Y
Z
a
b
X
d
Y
c
X
a
Z
b
c
Z
a
d
b
Y
c
d
• Sibling dari node double-black : BLACK
Satu nephew dari node double-black : RED
• Rotasi tunggal atau ganda dan token dihapus
16
Delete : Kasus B
X
X
Y
a
b
Y
a
c
b
c
• Sibling dari node double-black : BLACK
Dua nephew dari node double-black : BLACK
• Token dipindahkan ke atas dengan perubahan
warna tanpa rotasi
17
Delete : Kasus C
X
Y
Y
a
b
X
c
a
c
b
• Sibling dari node double-black : RED
• Terjadi rotasi tunggal dan perubahan warna
18
Contoh Delete
I
I
G
A
O
L
H
G
R
M
O
L
H
T
M
Delete A : delete leaf BLACK,
black-height terganggu
T
kasus B
I
I
G
O
H
R
L
Kasus B
R
M
token double BLACK
pada posisi eks node
BLACK
T
G
O
H
L
R
M
T
Token di Root dapat dihapus
19
Contoh Delete (lanjutan 1)
I
I
G
G
O
H
Token
mengubah RED
jadi BLACK
L
H
R
M
Delete L: node
mempunyai child leaf
RED yang akan
menggantikan.
O
M
G
R
O
H
T
T
I
M
R
T
Token
double-black
pada posisi
eks node
BLACK
20
Contoh Delete (lanjutan 2)
I
I
G
H
O
M
H
O
M
R
Token
mengubah RED
jadi BLACK
I
H
O
R
M
R
T
T
T
Delete G: child leaf RED yang akan menggantikan, token pada bekas
posisi BLACK
I
I
H
H
O
M
kasus A
M
H
R
R
T
I
R
M
T
T
Delete O: child leaf M yang akan menggantikan, token di bekasposisi
21
node BLACK
Contoh Delete (lanjutan 3)
I
I
H
R
M
H
T
Delete R: node R
mempunyai
predecessor BLACK
yang akan
menggantikan.
I
kasus B
H
M
M
T
T
Token
diletakkan
pada bekas
posisi M
Token
mengubah RED
jadi BLACK
I
H
M
T
22
Contoh Delete (lanjutan 4)
H
I
H
M
M
M
Kasus A
T
H
T
T
Delete I: leaf H akan menggantikan I, token di bekas posisi H
M
H
M
T
H
Kasus B
H
M
Hapus
token
di Root
M
H
Delete T: token diletakkan di bekas posisi T
23
Contoh Delete (lanjutan 5)
M
M
H
Delete H: delete leaf RED, langsung delete
24
Latihan
• Jika pada saat delete O, yang
menggantikan adalah node dari subtree
kanan, tree R-B menjadi …
• Jika pada saat delete I, yang
menggantikan adalah node yang berasal
dari subtree kanan, tree R-B menjadi …
25