Binary Search Tree
Binary Search Tree adalah struktur data yang dibuat dengan tujuan untuk mempermudah dan mempercepat pencarian pada data.
• Tree
Di dalam tree terdapat sebuah node, edge, root, dan leaf.
1. Node berupa bulatan yg berisi data.
2. Edge berupa garis yg menyambungkan masing2 node.
3. Root adalah akar yang hanya boleh satu dan menjadi titik tumpu dalam tree tersebut. Root selalu ada di paling atas.
4. Leaf: adalah node yg tidak memiliki cabang lagi dibawahnya.
Bentuk dalam tree:
1. Parent: orang tua yaitu node yang berada dari atas tree tersebut.
2. Children: anak yang berada di bawah node yang ditunjuk sebagai parents.
3. Grandparent: tingkat ketiga dari root atau node yang ditunjuk.
4. Decendants: keturunan.
5. Ancestor: leluhur.
6. Height: tingkat dari hitungan root. Root dimulai dari 1.
7. Level: sama seperti height tetapi root dihitung mulai dari 0.
• Binary Search Tree Concept
tree yg hanya boleh menampung dua children dari setiap node (max 2).
kalau children nya lebih dari 2 maka itu bukan binary tree.
-Tree sebelah kiri lebih kecil dari root
-Tree sebelah kanan lebih besar dari root
Dengan tujuan untuk mempermudah pencarian. Jika node nya sama, maka tidak akan meminta inputan lagi sehingga bentrokan terhadap suatu node tidak akan terjadi.
1. PERFECT Binary Tree
adalah Binary Tree yang setiap nodenya benar-benar memiliki 2 children tanpa putus atau hilang 1 node pun.
Perfect Binary Tree pasti Complete.
2. COMPLETE Binary Tree
adalah Binary Tree yang setiap level harus penuh/perfect/lengkap dulu baru boleh turun ke level selanjutnya.
Setiap binary tree yang Complete belum tentu Perfect.
3. SKEWED Binary Tree
adalah Binary Tree yang setiap node hanya memiliki 1 children dan turun ke level selanjutnya.
Cara Menghitung Height maupun Level dari setiap Node
1. jumlah node maximum dari tiap level nya dapat dihitung dari 2^levelnya
2. jumlah node maximum dari tiap height nya dapat dihitung dari (2^height)-1
misal height dari 7= (2^7)-1
• Operation dalam BST
1. Operation: search
Operasi untuk mencari data.
Semua data dimulai dari root yang berada di paling atas.
2. Operation: insert
Operasi untuk menginput data.
Kalau inputannya lebih kecil, maka datanya akan masuk ke kiri. Kalau lebih besar, maka akan masuk ke kanan.
Cara Insert: node di kiri root pasti lebih kecil dari root, dan node yg disebelah kanan root pasti lebih besar dari root. Data selanjutnya akan mengecek terus bergantung dengan data yang berada di root.
Untuk BST, tidak boleh terdapat angka yg sama.
3. Operation: delete
Operasi untuk menghapus data.
Cara delete BST terdapat 3 kondisi:
1. Jika data yg mau di delete tidak mempunyai children/leaf sama sekali, maka dapat langsung delete.
2. Jika hanya punya 1 anak, maka anak tersebut akan menggantikan data itu sendiri atau parentnya.
3. Jika punya 2 anak, maka terdapat dua pilihan lagi:
a. anak kiri paling kanan
b. anak kanan paling kiri
Tujuan dihapus agar menghemat penyimpanan memori.