Rules for BST Deletion Rules for BST Deletion
Men-delete X dari BST:
1.
Jika X adalah leaf, tinggal delete
2.
Jika X punya satu anak, ganti dengan anak tsb.
3.
Jika X punya dua anak, ganti
nilainya dgn predecessor secara in- order.
Red- Red -Black Tree Deletion Black Tree Deletion
Men-delete X dari RB Trees:
1.
Jika X adalah merah?
No problem
2.
Jika X adalah hitam?
Jika X bukan root, akan mengubah jumlah node hitam salah satu path ke leaf.
Tujuan
Tujuan Top- Top -Down Deletion Down Deletion
Men-delete X dari RB Trees:
z
Usahakan X adalah leaf merah
z
Sambil mencari lokasi X, semua node yang ditemui diganti merah.
z
Jika terjadi rule-violation, perbaiki dengan rotasi.
Red-BlackTrees
Terminology Terminology
z
X adalah node yang sdg ditinjau
z
T adalah X’s sibling
z
P adalah parent dari X dan T
z
R adalah anak kanan dari T
z
L adalah anak kiri dari T
Asumsi: selalu ada pola simetrinya!
Red-BlackTrees
X T
P
L R
Basic Strategy Basic Strategy
z
Sambil turun ke lokasi item yang hendak di-delete, kita ubah setiap node X menjadi merah.
z
Setiap mengubah X ke merah, kita tahu:
–
P juga merah (baru saja dikunjungi)
–T adl hitam (karena P merah)
Red-BlackTrees
Step 1
Step 1 – – Periksa root! Periksa root!
1.
Jika kedua anak root hitam:
a. Ubah root ke merah.
b. Lanjutkan X ke arah lokasi c. Lanjutkan ke Step 2
2.
Jika salah satu anak root merah, lanjutkan ke Step 2B.
Red-BlackTrees
Step 2
Step 2 – – Kasus Kasus Utama Utama
Sambil turun ke lokasi, kita temui situasi ini sampai mencapai item yang hendak di-delete.
Ubah X menjadi merah, dan lakukan penyesuaian thd node lain, rotasi jika perlu berdasar warna X dan anak-anak T.
Red-BlackTrees
T X
P
Case 2A: X
Case 2A: X punya punya 2 2 anak hitam anak hitam
2A1. T punya dua anak hitam 2A2. T punya anak dalam merah 2A3. T punya anak luar merah
Red-BlackTrees
P
T
X
Case 2A1: Color Flip Case 2A1: Color Flip
P T X
P T X
a b
Case 2A2: Double Rotation Case 2A2: Double Rotation
P
T
L R
X
L
T
b R
P
X a
Case 2A3: Single Rotation Case 2A3: Single Rotation
P
T
L R
X
T R P
X L
Case 2B
Case 2B – – X X punya 1 punya 1 anak merah anak merah
Lanjutkan turun ke anak X:
2B1. Jika X’ merah, lanjutkan turun ke anak X’.
2B2. Jika X hitam (T merah dan P hitam).
z
Lakukan Rotasi T terhadap P
zRecolor P dan T
z
Kembali ke Step 2
Red-BlackTrees
Case 2B
Case 2B
XP T
Lanjutkan turun ke anak X!
P
T X
Lanjutkan turun ke anak X lagi!
Case 2B1 P
X T
Case 2B2
X T
P Kembali ke Step 2
Step 3 Step 3
Akhirnya ditemukan node yang di- delete – sebuah leaf atau parent dari sebuah leaf.
Tinggal delete!
Ubah kembali root menjadi hitam.
Red-BlackTrees
Top- Top -Down Deletion Scenario Down Deletion Scenario
Red-BlackTreesStep 1 Root →merah
Ada anak merah
Step 2 Satu anaknya merah Step 2B X →merah
Step 2A1
Step 2A2
Step 2A3 Dua anak hitam Anak luar merah
Anak dalam merah
Flip color
Double rotation
Single rotation
Step 2B1 Step 2B2 Turun ke anak X’ merah X’ hitam
Turun ke anak
Rotasi T thd P Recolor T&P
Contoh
Contoh 1: Delete 10 1: Delete 10
15
6 17
3 12 16 20
18 23
10 13
X
Contoh
Contoh 1: Delete 10 ( 1: Delete 10 (lanjutan lanjutan) )
15
6 17
3 12 16 20
18 23
10 13
7 Turun ke anak Root, X pindah ke 6
X
Contoh
Contoh 1: Delete 10 ( 1: Delete 10 (lanjutan lanjutan) )
15
6 17
3 12 16 20
18 23
10 13
7
X
Salah satu anak X merah (case 2B). Turun ke anak, X pindah ke 12. Karena X baru (12) juga merah (2B1), turun lagi ke 10.
X′
Contoh
Contoh 1: Delete 10 ( 1: Delete 10 (lanjutan lanjutan) )
15
6 17
3 12 16 20
18 23
10 13
7 Step 3: karena 10 adalah node yang akan di-delete, nilainya diperbaharui dengan nilai anaknya (7) dan selanjutnya delete 7.
X
Contoh
Contoh 1: Delete 10 ( 1: Delete 10 (lanjutan lanjutan) )
15
6 17
3 12 16 20
18 23
7 13
Kondisi akhir setelah root dijadikan hitam (Step 4) lagi .
Contoh
Contoh 2: Delete 9 2: Delete 9
15
6 17
3 12 16 20
2 4 9 13
Root dijadikan merah.
Step 1 – root punya 1 anak merah X = root, lanjutkan ke step 2
X
Contoh
Contoh 2: Delete 9 ( 2: Delete 9 (lanjutan lanjutan) )
15
6 17
3 12 16 20
2 4 9 13
X punya 1 anak merah (case 2B). Lanjutkan turun ke anak, yaitu 6. Karena 6 juga merah (case 2B1), lanjutkan lagi turun ke 12.
X
Contoh
Contoh 2: Delete 9 ( 2: Delete 9 (lanjutan lanjutan) )
15
6 17
3 12 16 20
2 4 9 13
T X
P
Contoh
Contoh 2: Delete 9 ( 2: Delete 9 (lanjutan lanjutan) )
15
6 17
3 12 16 20
2 4 9 13
X T
P
Contoh
Contoh 2: Delete 9 ( 2: Delete 9 (lanjutan lanjutan) )
15
6 17
3 12 16 20
2 4 9 13
Step 3 – Delete 9 sebagai leaf merah.
Step 4 – Recolor root ke hitam.
X T P
Contoh
Contoh 2: Delete 9 ( 2: Delete 9 (lanjutan lanjutan) )
15
6 17
3 12 16 20
2 4 13
Kondisi akhir setelah root menjadi hitam kembali.
Contoh
Contoh 3: Delete 11 3: Delete 11
15
10 17
5 12
2
7 11 13
Set X ke anak dari root (10) Step 1 – root punya 2 anak hitam.
Jadikan root merah.
6 9 3
Valid and unaffected right subtree
4
X
Contoh
Contoh 3: Delete 11 ( 3: Delete 11 (lanjutan lanjutan) )
15
10 17
5 12
2
7 11 13
Turun ke node anak, X = 12 X punya satu anak merah (case 2B) 6 9
3
Valid and unaffected right subtree
4 X
Contoh
Contoh 3: Delete 11 ( 3: Delete 11 (lanjutan lanjutan) )
15
10 17
5 12
2
7 11 13
Karena X adalah hitam (case 2B2), dan T merah P hitam, rotasi T thd P.
Recolor T and P dan kembali ke step 2 6 9
3
Valid and unaffected right subtree
4 P
T X
Contoh
Contoh 3: Delete 11 ( 3: Delete 11 (lanjutan lanjutan) )
15 5 17
7
Sekarang X sudah hitam dengan parent merah dan sibling hitam. X dan T punya 2 anak merah (case 2A1).
Recolor X, P dan T.
6 9
3 Valid
and unaffected right subtree
4
P
T 10
12
11 13
2 X
Contoh
Contoh 3: Delete 11 ( 3: Delete 11 (lanjutan lanjutan) )
15 5 17
7
3 Valid
and unaffected right subtree
4
P
T 10
X 12 2
Contoh
Contoh 3: Delete 11 ( 3: Delete 11 (lanjutan lanjutan) )
15 5 17
7
3 Valid
and unaffected right subtree
4
10
2 12P
Contoh
Contoh 3: Delete 11 ( 3: Delete 11 (lanjutan lanjutan) )
15 5 17
7
Sekarang node yang hendak di-delete merah.
Step 3 – delete 11 sebagai node merah.
6 9
3 Valid
and unaffected right subtree
4
10
12
11 X 13
2 P
T
Contoh
Contoh 3: Delete 11 ( 3: Delete 11 (lanjutan lanjutan) )
15 5 17
7
Step 4 – kembalikan root ke hitam.
6 9
3 Valid
and unaffected right subtree
4
10
12
13 2