Struktur data 06 (red black tree)

Post on 15-Jun-2015

475 views 0 download

Transcript of Struktur data 06 (red black tree)

Red Black Tree

Red Black Tree (RB-Tree) Sebagai alternatif ‘balance tree’ bagi AVL-Tree,

oleh karena itu RB-Tree memiliki sifat sebagai Binary Serach Tree.

RB-Tree, tidak sebaik AVL-Tree dalam hal ‘height-balance ’, tetapi RB-Tree mempunyai keunggulan dalam hal proses Insert dan Delete, dengan kata lain untuk mempercepat proses Insert dan Delete, RB-Tree mengorbankan kwalitas ‘height-balance ’.

Copyright Sunarya D. Marwah

Red Black Tree

Karakteristik RB-Tree

Setiap node berwarna red atau black Setiap node red harus mempunyai anak

black Setiap jalur dari root ke semua leaf harus

memiliki jumlah node black yang sama. Root berwarna black. NULL dihitung sebagai black.

Copyright Sunarya D. Marwah

Red Black Tree

InsertMisalkan: n = node-baru

p = parent dari ngp = parent dari parentu = uncle dari n

- Data baru n berwarna red

Copyright Sunarya D. Marwah

Red Black Tree

Keadaan sederhana (1):

- (1a) Bila n = root, n-color = black, selesai.

- (1b) Bila p.color = black, n.color tidak berubah, selesai.

Copyright Sunarya D. Marwah

Red Black Tree

Keadaan tidak sederhana (2)

- (2) If p.color == red:- If u.color == red:

- Flip color: p.color = u.color = black.

gp.color = red. Lanjutkan rebalancing pada gp (bila belum selesai)

Copyright Sunarya D. Marwah

Red Black Tree

Keadaan tidak sederhana (3)

- (3a) If p.color == red: If u.color == black:

- If n == p.left and p == gp.left:Single rotation: right(gp);Flip color: p.color = black.

gp.color = red;

Copyright Sunarya D. Marwah

Red Black Tree

Keadaan tidak sederhana (3)

- (3b) If p.color == red:- If u.color == black:

- If n == p.right and p == gp.left:Double rot. : left(p);

right(gp);Flip color: n.color = black.

gp.color = red;

Copyright Sunarya D. Marwah

Red Black Tree

Keadaan tidak sederhanaAturan diatas berlaku untuk

keadaansetangkup (mirror), yaitu:

- (3a) n == p.right and p == gp.right.

- (3b) n == p.left and p == gp.right.

Copyright Sunarya D. Marwah

Red Black Tree

Contoh insert: +65 +76 +71 +79 +82 +73 +84 +72

+77

+65 Kasus 1a.

+76 Kasus 1b.

Copyright Sunarya D. Marwah

76

65

65

Red Black Tree

+71 Kasus 3b

Flip color

Copyright Sunarya D. Marwah

76

65

71

71

65 76

71

65 76

71

65

76

Red Black Tree

+79 Kasus 2

Root harus black

Copyright Sunarya D. Marwah

71

65 76

79

71

65 76

79

71

65 76

79

Red Black Tree

+82 Kasus 3a

Copyright Sunarya D. Marwah

71

65 76

79

82

71

65 79

8276

Red Black Tree

+73 Kasus 2

Copyright Sunarya D. Marwah

71

65 79

8276

71

65 79

8276

73 73

Red Black Tree

+84 Kasus 1b

Copyright Sunarya D. Marwah

71

65 79

8276

71

65 79

8276

73 73 84

Red Black Tree

+72 Kasus 3a

Copyright Sunarya D. Marwah

71

65 79

8273

71

65 79

8276

73 72 8484

72

76

Red Black Tree

+77 Kasus 2

Rebalancing dilanjutkan pada gp

Copyright Sunarya D. Marwah

71

65 79

8273

71

65 79

8273

72 71 848476 76

77 77

Red Black Tree

+77 Kasus 3b

Rotasi kanan

Copyright Sunarya D. Marwah

71

65 73

7972

71

65 79

8273

72 828476 76

77 77 84

Red Black Tree

Lanjutan +77 Rotasi kiri

Copyright Sunarya D. Marwah

71

65

73

79

72 8276

77 84

71

65 73

7972

8276

77 84

Red Black Tree

Hasil insert:+65 +76 +71 +79 +82 +73 +84 +72 +77

Copyright Sunarya D. Marwah

71

65

73

79

72 8276

77 84

Red Black Tree

Delete

Misalkan: v = node yang dihapusu = node penggantip = parent dari us = sibling dari uz = child dari s (z keponakan u)

Copyright Sunarya D. Marwah

Red Black Tree

Keadaan sederhana (1):

- (1a) Bila u = leaf dan u.color = red, delete u, selesai.- (1b) Bila u != leaf dan u.color = red dan

u.color = v.color, selesai.

Bila u.color == black, keadaan menjadi tidak sederhana

Copyright Sunarya D. Marwah

Red Black Tree

Double black Node

Node v adalah node yang dihapusNode u adalah node pengganti v.Bila v.color = red, u.color = black.Bila v.color = black, u.color = double

black.

Copyright Sunarya D. Marwah

Red Black Tree

Double black Node

Penandaan double black merupakan suatu usaha secara sementara, memaksa bahwa seluruh jalur memiliki jumlah black node yang sama. Tetapi hal ini bukan merupakan penandaan yang sah dan permanen, sehingga pengaturan RB-tree (rotasi dan flip color) tetap harus dilakukan.

Copyright Sunarya D. Marwah

Red Black Tree

Keadaan tidak sederhana (2): Bila node u (pengganti v) == black.

- Bila s.color = black dan ada satu z.color = red.

Lakukan perubahan sebagai berikut: (2a) Single-rotation pada p, kemudian flip-color z.color = black, s.color = red. (2b) Double-rotation pada s, kemudian pada p, kemudian z.color = black.

Copyright Sunarya D. Marwah

Red Black Tree

Keadaan tidak sederhana (3):

- Bila s.color = black dan z.color = black. Lakukan perubahan seperti pada insert. Flip-color s.color dari black menjadi red, p.color dari red menjadi black, selesai. Bila p.color dari black menjadi double-black, perubahan berlanjut dengan p.

Copyright Sunarya D. Marwah

Red Black Tree

Keadaan tidak sederhana (4):

- Bila s.color = red. Lakukan single-rotation pada p, flip-color s.color dari red menjadi black, p.color dari black menjadi red, maka kasus 4, dikonversi- kan menjadi kasus 2 atau kasus 3 untuk diselesaikan. Bila tidak, maka perubahan berlanjut hingga p.

Copyright Sunarya D. Marwah

Red Black Tree

Latihan Insert: +65 +76 +71 +79 +82 +73 +84 +72 +77

Delete:-65 -76 -71 -79 -73 -72

Copyright Sunarya D. Marwah

Red Black Tree Hasil insert:

+65 +76 +71 +79 +82 +73 +84 +72 +77 A L G O R I T H M

Copyright Sunarya D. Marwah

71

65

73

79

72 8276

77 84

Red Black Tree

-65Node pengganti (u) ?

Copyright Sunarya D. Marwah

71

65

73

79

72 8276

77 84

Red Black Tree

-65 Kasus 3

Copyright Sunarya D. Marwah

71

73

79

72 8276

77 84

Double black

Red Black Tree

-65 Lanjutan

Copyright Sunarya D. Marwah

71

73

79

72 8276

77 84

Red Black Tree

-65 Hasil akhir:

Copyright Sunarya D. Marwah

71

73

79

72 8276

77 84

Red Black Tree

-76 Kasus 1 (sederhana)

Copyright Sunarya D. Marwah

71

73

79

72 8276

77 84

Red Black Tree

-76 Hasil akhir:

Copyright Sunarya D. Marwah

71

73

79

72 8277

84

Red Black Tree

-71 Kasus 1 (sederhana)

Copyright Sunarya D. Marwah

71

73

79

72 8277

84

Red Black Tree

-71 Hasil akhir

Copyright Sunarya D. Marwah

72

73

79

8277

84

Red Black Tree

-79

Copyright Sunarya D. Marwah

72

73

79

8277

84

Red Black Tree

-79 Kasus 2

Copyright Sunarya D. Marwah

72

73

77

82

84

Red Black Tree

-79 Hasil akhir:

Copyright Sunarya D. Marwah

72

73

77

82

84

Red Black Tree

-82

Copyright Sunarya D. Marwah

72

73

77

82

84

Red Black Tree

-82 Kasus 3

Copyright Sunarya D. Marwah

72

73

77

84

Red Black Tree

-82 Hasil akhir:

Copyright Sunarya D. Marwah

72

73

77

84

Red Black Tree

-73

Copyright Sunarya D. Marwah

72

73

77

84

Red Black Tree

-73 Kasus 2

Hasil akhir:

Copyright Sunarya D. Marwah

72

77

84

77

8472

77

8472

Red Black Tree

-84 Kasus 3

Copyright Sunarya D. Marwah

77

72 84

Red Black Tree

-84 Kasus 3

Hasil akhir:

Copyright Sunarya D. Marwah

77

72

77

72

Red Black Tree

-72

-77 NULL = Tree kosong !

Copyright Sunarya D. Marwah

77

72

77

77

Red Black Tree

Latihan Insert:

+13 +85 +15 +70 +20 +60 +30+50 +65 +80 +90 +40 +10 +55

Delete:-10 -60 -70

Copyright Sunarya D. Marwah

Red Black Tree

Insert: +10 s/d +13

Copyright Sunarya D. Marwah

Red Black Tree

Insert: +10 s/d +16

Copyright Sunarya D. Marwah

Red Black Tree

Insert: +10 s/d +24

Copyright Sunarya D. Marwah

Red Black Tree

Insert: +10 s/d +40

Copyright Sunarya D. Marwah

Red Black Tree

Jawaban Latihan Insert:

Copyright Sunarya D. Marwah

Red Black Tree

Jawaban Latihan Delete(10):

Copyright Sunarya D. Marwah

Red Black Tree

Jawaban Latihan Delete(60):

Copyright Sunarya D. Marwah

Red Black Tree

Jawaban Latihan Delete(60): (lanjutan)

Copyright Sunarya D. Marwah

Red Black Tree

Jawaban Latihan Delete(60): (lanjutan)

Copyright Sunarya D. Marwah

Red Black Tree

Jawaban Latihan Delete(70):

Copyright Sunarya D. Marwah

Red Black Tree

Jawaban Latihan Delete(70): (lanjutan)

Copyright Sunarya D. Marwah