Rebalancing pada Binary Search Tree

Pada modul sebelumnya dibahas bagaimana mendeteksi imbalance tree, pada modul ini akan dibahas bagaimana rebalancing tree tersebut.

Ada 4 macam imbalance tree, yaitu left-left, right-right, left-right dan right-left imbalance. Untuk jelasnya lihat gambar berikut.

Untuk melakukan balancing padan tree, digunakan rotasi. Berdasarkan tipe imbalance tree, terdapat 4 cara rotasi:

  • left-left, lakukan right rotation.
  • right-right, lakukan left rotation.
  • left-right, lakukan left rotation untuk mengubah tree menjadi left-left, kemudian lakukan right rotation.
  • right-left, lakukan right rotation untuk mengubah tree menjadi right-right, kemudian lakukan left rotation.

Right rotation pada left-left imbalance

Berikut tahap-tahap right rotation dengan contoh kasus tree pada gambar-1.

  • Pertama tentukan pivot point, pada gambar dibawah adalah node 20.
  • Kemudian lakukan rotasi ke kanan, dimana node 20 akan menjadi root.
  • Node 10 dan children akan langsung dipasangkan dibawah node 20, sebagai kaki kiri.
  • Node 20 dan children akan langsung dipasangkan dibawah node 20, sebagai kaki kanan.
  • Node 25 akan dipasangkan dikaki kiri node 30.
Gambar-1 Right rotation

Left rotation pada right-right imbalance

Berikut tahap-tahap leftrotation dengan contoh kasus tree pada gambar-2.

  • Pertama tentukan pivot point, pada gambar dibawah adalah node 40.
  • Kemudian lakukan rotasi ke kiri, dimana node 40 akan menjadi root.
  • Node 60 dan children akan langsung dipasangkan dibawah node 40, sebagai kaki kanan.
  • Node 30 dan children akan langsung dipasangkan dibawah node 40, sebagai kaki kiri.
  • Node 35 akan dipasangkan dikaki kanan node 30.
Gambar-2 Left Rotation

Left rotation – Right Rotation pada left-right imbalance

Untuk balancing left-right imbalance tree, digunakan 2 rotasi diatas, yaitu left rotation hanya pada pivot point. Tree akan menjadi left-left imbalance, baru balancing dengan right rotation.

  • Pertama tentukan pivot point untuk left rotation, pada gambar dibawah adalah node 20.
  • Kemudian lakukan rotasi ke kiri, dimana node 20 akan menggantikan posisi node 10.
  • Node 10 dan children akan langsung dipasangkan dibawah node 20, sebagai kaki kiri.
  • Node 25 akan langsung dipasangkan dibawah node 20, sebagai kaki kanan.
  • Node 15 akan dipasangkan dikaki kanan node 10.
  • Sekarang kita memiliki left-left unbalanced (sama seperti gambar-1), langkah selanjutnya adalah melakukan right rotation.
Gambar-3 Left-Right Rotation

Righ rotation – Left rotation pada right-left imbalance

Untuk balancing right-right imbalance tree, digunakan 2 rotasi diatas, yaitu right rotation hanya pada pivot point. Tree akan menjadi right-right imbalance, baru balancing dengan left rotation.

  • Pertama tentukan pivot point untuk right rotation, pada gambar dibawah adalah node 40.
  • Kemudian lakukan rotasi ke kanan, dimana node 40 akan menggantikan posisi node 60.
  • Node 60 dan children akan langsung dipasangkan dibawah node 40, sebagai kaki kanan.
  • Node 35 akan langsung dipasangkan dibawah node 40, sebagai kaki kiri.
  • Node 35 akan dipasangkan dikaki kiri node 60.
  • Sekarang kita memiliki right-right unbalanced (sama seperti gambar-2), langkah selanjutnya adalah melakukan left rotation.
Gambar-4 Right-Left Rotation

Sharing is caring:

Leave a Comment