Binary Search Tree
- Binary Search Tree: sebuah konsep penyimpanan data, dimana data disimpan dalam bentuk tree yang setiap node dapat memiliki anak maksimal 2 node.
Aturan Binary Search Tree:
- Setiap anak node sebelah kiri harus lebih kecil nilainya daripada root nodenya.
- Setiap anak node sebelah kanan harus lebih besar nilainya daripada root nodenya.
3 jenis cara untuk melakukan penelusuran pada Binary Search Tree:
- Pre Order: Print data, telusur ke kiri, telusur ke kanan
- In Order: Telusur ke kiri, print data, telusur ke kanan
- Post Order: Telusur ke kiri, telusur ke kanan, print data
Dalam Binary Search Tree, terdapat 3 operasi dasar, yaitu:
- Find(x) : mencari value x di dalam Binary Search Tree (Search)
- Insert(x) : memasukkan value baru x ke Binary Search Tree (Push)
- Remove(x) : menghapus key x dari Binary Search Tree (Delete)
Operasi: Search
Karena ada syarat di dalam Binary Search Tree, searching di dalam BST menjadi mudah.
Misalkan key yang dicari adalah value X.
- Memulai dari root
- Jika root adalah value yang dicari, maka berhenti
- Jika X lebih kecil dari root, maka cari secara rekursif di tree sebelah kiri
- Jika X lebih besar dari root, maka cari secara rekursif di tree sebelah kanan
Operasi: Insertion
Memasukkan value baru ke Binary Search Tree dilakukan dengan rekursif.
Misalkan kita memasukkan value X.
- Memulai dari root
- Jika X lebih kecil dari node key, masukkan X ke subtree kiri, jika lebih besar, masukkan X ke subtree kanan
- Ulang sampai ditemukan node kosong untuk meletakkan X
Operasi: Deletion
3 case yang harus dipertimbangkan:
- Jika value yang ingin dihapus ada di leaf, langsung hapus
- Jika value yang ingin dihapus memiliki satu anak, hapus nodenya dan gabungkan anakanya ke parent value yang dihapus
- Jika value yang akan dihapus memiliki dua anak, cari anak paling kanan di subtree kiri (node P), ganti value dengan value P dan hilangkan P secara rekursif
Comments
Post a Comment