Data Structures Pertemuan 7

Red Black TreeĀ 

Tree yang proses insertnya masih sama dengan binary tree

Binary tree yang nodenya memiliki warna,merah dan hitam

Memiliki root yang selalu berwatna hitam

Setiap node yang baru dimasukkan memiliki warna merah

Node externalnya berwarna hitam

Node berwarna merah tidak boleh memiliki child berwarna merah

External node merupakan leaf nodes yang secara fisik sebenarnya external nodes tidak ada.

External node ada untuk membantu mempermudah algoritma RBT.

Warna default external node adalah hitam.

 

Insertion

Bila node yang dimasukkan ternyata memiliki parent berwarna hitam, maka tidak terjadi violation

Screen Shot 2016-05-24 at 9.27.14 PM

 

Bila node yang dimasukkan memiliki parent berwarna merah, lihatlah uncle dari node tersebut. Apabila unclenya juga berwarna merah maka lakukan

Screen Shot 2016-05-24 at 9.28.35 PM

 

Bila node yang dimasukkan memiliki parent berwarna merah, lihatlah uncle dari node tersebut. Apabila unclenya berwarna hitam maka lakukan

single rotation bila

Screen Shot 2016-05-24 at 9.27.20 PM

 

double rotation bila

Screen Shot 2016-05-24 at 9.27.22 PM

 

Deletion

Cara penghapusannya memiliki step yang sama dengan BST namun terdapat beberapa ketentuan tambahan yaitu

Bila a adalah double black node dan memiliki saudara yang berwarna merah maka

Screen Shot 2016-05-24 at 9.32.53 PM

 

Bila a adalah double black node dan memiliki saudara berwarna hitam, maka lihatlah terlebih dahulu anak dari saudara tersebut. Bila berwarna hitam maka

Screen Shot 2016-05-24 at 9.32.55 PM

 

Bila a adalah double black node dan memiliki saudara berwarna hitam, maka lihatlah terlebih dahulu anak daru saudara tersebut. Bila berwarna merah maka

Screen Shot 2016-05-24 at 9.32.57 PM

 


 


 

2-3 tree

2-3 tree bukanlah binary tree

 

ketentuan dalam 2-3 tree:

1. Bila node non-leaf memiliki 2 data maka node tersebut harus mamiliki 3 child

2. Bila node non-leaf memiliki 1 data maka node tersebut harus mamiliki 2 child

 

Insertion

bila node yang dimasukkan lebih kecil daripada parentnya maka node tersebut harus menjadi left child

bila node yang dimasukkan lebih besar daripada parentnya maka node tersebut harus menjadi right child

bila node yang dimasukkan berada di antara kedua node yang menjadi parentnya maka node tersebut harus menjadi middle child

 

apabila node telah terisi penut oleh 2 data dan harus dimasuki lagi oleh 1 data yang baru, seperti contou memasukkan angka 75

Screen Shot 2016-05-24 at 9.38.08 PM

 

maka karena angka 80 berada di antara 75 dan 90, sehingga angka 80 harus dinaikkan ke atas, masuk ke dalam node yang telah berisi data 70

Screen Shot 2016-05-24 at 9.39.19 PM

 

Sedangkan 75 dan 90 masing2 membentuk node baru yang berisikan oleh 1 data

(setiap ada 3 data memenuhi 1 node, 1 data yang bread di tengah dinaikkan ke atas, sedangkan 2 data lainnya masing2 membentuk node baru)

Screen Shot 2016-05-24 at 9.39.23 PM

 

 

Deletion

Untuk deletion di dalam 2-3 tree boleh menggunakan cara apa saja asalkan masih tetap memenuhi persyaratan persaratan 2-3 tree seperti yang tertera di atas

 

Contoh delete 50 pada

Screen Shot 2016-05-24 at 9.42.30 PM

 

Dapat dilakukan dengan mengganti angka 50 dengan menggunakan anak kiri yang memiliki angka paling besar (40) ataupun anak kanan yang memiliki angka paling kecil (60)

Screen Shot 2016-05-24 at 9.42.32 PM

 

Setelah itu node yang berisikan data 20 dan 30 hanya memiliki 2 child, agar memenuhi start 2-3 tree yang berlaku maka salah satu dari mereka harus turun menjadi child (b0leh 20 maupun 30).

Bila yang diturunkan ialah 20 maka 20 harus berada di camping kanan angla 15 agar memenuhi persyaratan yang berlaku.

Screen Shot 2016-05-24 at 9.42.35 PM

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Leave a Reply