Pengertian Binary Search Tree
Binary search tree adalah sebuah metode dari data structure yang mempunyai ciri sebagai berikut:- Bagian kiri dari subtree adalah nodus yang mempunyai nilai yang lebih kecil
- Bagian kanan dari subtree adalah nodus yang mempunyai nilai yang lebih besar
- Bagian kiri dan kanan dari subtree harus berupa binary search tree juga
Mencari Sebuah Angka (searching)
Ilustrasi Binary Search Tree dari geeksforgeeks
Bisa kita lihat dari contoh diatas, bagian kiri dari binary search tree merupakan nilai yang kecil sedangkan bagian kanannya adalah nilai-nilai yang besar.
Kita bisa mengambil contoh angka 7. Ketika angka 7 ingin dicari pada binary search tree diatas, maka dia akan mengecek. Apakah 8 lebih kecil atau besar dari 7? Karena lebih kecil, maka 7 akan dicari di bagian kiri. Kemudian, akan dicek lagi. Apakah 7 lebih kecil daripada 3? Jawabannya adalah tidak, sehingga 7 dicari dibagian kanan. Lalu ketika sampai di 6, karena 7 lebih besar daripada 6, maka lokasi 7 pasti di kanan dari cabang si 6. Begitulah kira - kira cara kerja dari binary search tree.
Memasukkan Sebuah Angka pada BST (insertion)
100 100
/ \ Insert 5 / \
20 500 ---------> 20 500
/ \ / \
10 30 10 30
/
5
Coba kita lihat illustrasi ketika kita akan melakukan insertion pada binary search tree. Nah, pada contoh diatas, saya ingin memasukkan 5 pada binary search tree tersebut. Karena angka 5 lebih kecil daripada 100, maka saya akan menaronya di bagian kiri dari cabang 100. Lalu karena lebih kecil dari 20, saya taro lagi di bagian kiri dari 20. Nah ketika bertemu 10. otomatis 5 akan ditaro di kiri cabang dari 10 karena nilainya lebih kecil daripada 10.
Menghapus Sebuah Angka pada BST (delete)
Setelah kita mempelajari insertion, sekarang kita akan membahas tentang delete. Seperti namanya sendiri, kita akan menghapus angka yang ada di binary search tree sesuai dengan angka yang ingin dihapus. Kemungkinan dan cara dalam melakukan delete pada binary search tree adalah sebagai berikut:
1) Nodus yang ingin di hapus ada pada daun: Yaudah hapus aja langsung, gampang kan?
50 50
/ \ delete(20) / \
30 70 ---------> 30 70
/ \ / \ \ / \
20 40 60 80 40 60 80
2) Nodus yang ingin di hapus hanya mempunyai satu cabang atau keturunan: Salin keturunannya lalu taro di tempat di mana angka tersebut di hapus.
50 50
/ \ delete(30) / \
30 70 ---------> 40 70
\ / \ / \
40 60 80 60 80
3) Nodus yang ingin di hapus hanya mempunyai dua cabang atau keturunan: Cari keturunan di bagian kanan yang mempunyai nilai paling kecil. Dalam contoh ini, karena 60 lebih besar dari 50 dan kebetulan paling kecil di bagian kanan 50, maka angka ini naik jadi paling atas dan angka 50 dihapus.
50 60
/ \ delete(50) / \
40 70 ---------> 40 70
/ \ \
60 80 80

Komentar
Posting Komentar