struktur data 06 (red black tree)

59
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

Upload: sunarya-marwah

Post on 15-Jun-2015

470 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

Page 2: Struktur data 06 (red black tree)

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

Page 3: Struktur data 06 (red black tree)

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

Page 4: Struktur data 06 (red black tree)

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

Page 5: Struktur data 06 (red black tree)

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

Page 6: Struktur data 06 (red black tree)

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

Page 7: Struktur data 06 (red black tree)

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

Page 8: Struktur data 06 (red black tree)

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

Page 9: Struktur data 06 (red black tree)

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

Page 10: Struktur data 06 (red black tree)

Red Black Tree

+71 Kasus 3b

Flip color

Copyright Sunarya D. Marwah

76

65

71

71

65 76

71

65 76

71

65

76

Page 11: Struktur data 06 (red black tree)

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

Page 12: Struktur data 06 (red black tree)

Red Black Tree

+82 Kasus 3a

Copyright Sunarya D. Marwah

71

65 76

79

82

71

65 79

8276

Page 13: Struktur data 06 (red black tree)

Red Black Tree

+73 Kasus 2

Copyright Sunarya D. Marwah

71

65 79

8276

71

65 79

8276

73 73

Page 14: Struktur data 06 (red black tree)

Red Black Tree

+84 Kasus 1b

Copyright Sunarya D. Marwah

71

65 79

8276

71

65 79

8276

73 73 84

Page 15: Struktur data 06 (red black tree)

Red Black Tree

+72 Kasus 3a

Copyright Sunarya D. Marwah

71

65 79

8273

71

65 79

8276

73 72 8484

72

76

Page 16: Struktur data 06 (red black tree)

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

Page 17: Struktur data 06 (red black tree)

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

Page 18: Struktur data 06 (red black tree)

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

Page 19: Struktur data 06 (red black tree)

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

Page 20: Struktur data 06 (red black tree)

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

Page 21: Struktur data 06 (red black tree)

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

Page 22: Struktur data 06 (red black tree)

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

Page 23: Struktur data 06 (red black tree)

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

Page 24: Struktur data 06 (red black tree)

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

Page 25: Struktur data 06 (red black tree)

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

Page 26: Struktur data 06 (red black tree)

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

Page 27: Struktur data 06 (red black tree)

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

Page 28: Struktur data 06 (red black tree)

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

Page 29: Struktur data 06 (red black tree)

Red Black Tree

-65Node pengganti (u) ?

Copyright Sunarya D. Marwah

71

65

73

79

72 8276

77 84

Page 30: Struktur data 06 (red black tree)

Red Black Tree

-65 Kasus 3

Copyright Sunarya D. Marwah

71

73

79

72 8276

77 84

Double black

Page 31: Struktur data 06 (red black tree)

Red Black Tree

-65 Lanjutan

Copyright Sunarya D. Marwah

71

73

79

72 8276

77 84

Page 32: Struktur data 06 (red black tree)

Red Black Tree

-65 Hasil akhir:

Copyright Sunarya D. Marwah

71

73

79

72 8276

77 84

Page 33: Struktur data 06 (red black tree)

Red Black Tree

-76 Kasus 1 (sederhana)

Copyright Sunarya D. Marwah

71

73

79

72 8276

77 84

Page 34: Struktur data 06 (red black tree)

Red Black Tree

-76 Hasil akhir:

Copyright Sunarya D. Marwah

71

73

79

72 8277

84

Page 35: Struktur data 06 (red black tree)

Red Black Tree

-71 Kasus 1 (sederhana)

Copyright Sunarya D. Marwah

71

73

79

72 8277

84

Page 36: Struktur data 06 (red black tree)

Red Black Tree

-71 Hasil akhir

Copyright Sunarya D. Marwah

72

73

79

8277

84

Page 37: Struktur data 06 (red black tree)

Red Black Tree

-79

Copyright Sunarya D. Marwah

72

73

79

8277

84

Page 38: Struktur data 06 (red black tree)

Red Black Tree

-79 Kasus 2

Copyright Sunarya D. Marwah

72

73

77

82

84

Page 39: Struktur data 06 (red black tree)

Red Black Tree

-79 Hasil akhir:

Copyright Sunarya D. Marwah

72

73

77

82

84

Page 40: Struktur data 06 (red black tree)

Red Black Tree

-82

Copyright Sunarya D. Marwah

72

73

77

82

84

Page 41: Struktur data 06 (red black tree)

Red Black Tree

-82 Kasus 3

Copyright Sunarya D. Marwah

72

73

77

84

Page 42: Struktur data 06 (red black tree)

Red Black Tree

-82 Hasil akhir:

Copyright Sunarya D. Marwah

72

73

77

84

Page 43: Struktur data 06 (red black tree)

Red Black Tree

-73

Copyright Sunarya D. Marwah

72

73

77

84

Page 44: Struktur data 06 (red black tree)

Red Black Tree

-73 Kasus 2

Hasil akhir:

Copyright Sunarya D. Marwah

72

77

84

77

8472

77

8472

Page 45: Struktur data 06 (red black tree)

Red Black Tree

-84 Kasus 3

Copyright Sunarya D. Marwah

77

72 84

Page 46: Struktur data 06 (red black tree)

Red Black Tree

-84 Kasus 3

Hasil akhir:

Copyright Sunarya D. Marwah

77

72

77

72

Page 47: Struktur data 06 (red black tree)

Red Black Tree

-72

-77 NULL = Tree kosong !

Copyright Sunarya D. Marwah

77

72

77

77

Page 48: Struktur data 06 (red black tree)

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

Page 49: Struktur data 06 (red black tree)

Red Black Tree

Insert: +10 s/d +13

Copyright Sunarya D. Marwah

Page 50: Struktur data 06 (red black tree)

Red Black Tree

Insert: +10 s/d +16

Copyright Sunarya D. Marwah

Page 51: Struktur data 06 (red black tree)

Red Black Tree

Insert: +10 s/d +24

Copyright Sunarya D. Marwah

Page 52: Struktur data 06 (red black tree)

Red Black Tree

Insert: +10 s/d +40

Copyright Sunarya D. Marwah

Page 53: Struktur data 06 (red black tree)

Red Black Tree

Jawaban Latihan Insert:

Copyright Sunarya D. Marwah

Page 54: Struktur data 06 (red black tree)

Red Black Tree

Jawaban Latihan Delete(10):

Copyright Sunarya D. Marwah

Page 55: Struktur data 06 (red black tree)

Red Black Tree

Jawaban Latihan Delete(60):

Copyright Sunarya D. Marwah

Page 56: Struktur data 06 (red black tree)

Red Black Tree

Jawaban Latihan Delete(60): (lanjutan)

Copyright Sunarya D. Marwah

Page 57: Struktur data 06 (red black tree)

Red Black Tree

Jawaban Latihan Delete(60): (lanjutan)

Copyright Sunarya D. Marwah

Page 58: Struktur data 06 (red black tree)

Red Black Tree

Jawaban Latihan Delete(70):

Copyright Sunarya D. Marwah

Page 59: Struktur data 06 (red black tree)

Red Black Tree

Jawaban Latihan Delete(70): (lanjutan)

Copyright Sunarya D. Marwah