Bagikan :
Data Structures and Algorithms: Mastering Binary Search Trees
foto : Morfogenesis Teknologi Indonesia Creative Team
Binary Search Tree merupakan struktur data pohon biner yang memungkinkan operasi pencarian, penyisipan, dan penghapusan dalam kompleksitas waktu rata-rata O(log n). Setiap simpul memiliki kunci unik, simpul kiri bernilai lebih kecil, dan simpul kanan bernilai lebih besar. Pemanfaatannya sangat luas mulai dari basis data indeks, kompiler, hingga sistem file.
Keuntungan utama Binary Search Tree adalah efisiensi pencarian. Dengan strategi divide and conquer, setiap langkah membuang setengah dari ruang pencarian. Namun performa optimal hanya dicapai jika pohon tetap seimbang. Pada kasus terburuk, misalnya saat data dimasukkan secara berurutan, pohon menjadi sangat miring dan kompleksitasnya turun menjadi O(n). Untuk itu diperlukan strategi balancing seperti AVL atau Red-Black Tree.
Operasi dasar meliputi traversal in-order, pre-order, dan post-order. In-order menghasilkan deret terurut secara menaik. Penyisipan dimulai dari akar, bandingkan nilai, gerak ke kiri bila lebih kecil, ke kanan bila lebih besar, ulangi hingga menemukan posisi kosong. Penghapusan terbagi tiga skenario: menghapus daun, simpul dengan satu anak, serta simpul dengan dua anak yang memerlukan pencarian in-order successor.
Contoh implementasi sederhana dalam Python:
class Node:
def __init__(self, key):
self.key = key
self.left = None
self.right = None
def insert(root, key):
if root is None:
return Node(key)
if key < root.key:
root.left = insert(root.left, key)
else:
root.right = insert(root.right, key)
return root
def search(root, key):
if root is None or root.key == key:
return root
if key < root.key:
return search(root.left, key)
return search(root.right, key)
Langkah-langkah penyeimbangan AVL Tree:
1. Hitung faktor keseimbangan setiap simpul setelah operasi penyisipan atau penghapusan.
2. Jika faktor lebih dari 1 atau kurang dari -1, lakukan rotasi.
3. Rotasi tunggal dilakukan pada kondisi Left-Left atau Right-Right.
4. Rotasi ganda untuk situasi Left-Right atau Right-Left.
5. Perbarui tinggi simpul dan pastikan seluruh pohon memenuhi sifat AVL.
Binary Search Tree juga menjadi fondasi bagi struktur data tingkat lanjut seperti B-Tree yang digunakan dalam sistem penyimpanan, Treap yang menggabungkan tree dan heap, serta Splay Tree yang memindahkan simpul yang sering diakses ke akar. Pemahaman mendalam tentang BST akan mempermudah menguasai topologi pohon lainnya dan meningkatkan kemampuan menyelesaikan masalah kompleks secara efisien.
Ingin menerapkan algoritma canggih seperti Binary Search Tree ke dalam aplikasi bisnis Anda? Tim Morfotech.id siap membantu membangun solusi berbasis struktur data optimal yang cepat dan andal. Konsultasikan kebutuhan software Anda melalui WhatsApp +62 811-2288-8001 atau kunjungi https://morfotech.id untuk informasi lebih lanjut.
Keuntungan utama Binary Search Tree adalah efisiensi pencarian. Dengan strategi divide and conquer, setiap langkah membuang setengah dari ruang pencarian. Namun performa optimal hanya dicapai jika pohon tetap seimbang. Pada kasus terburuk, misalnya saat data dimasukkan secara berurutan, pohon menjadi sangat miring dan kompleksitasnya turun menjadi O(n). Untuk itu diperlukan strategi balancing seperti AVL atau Red-Black Tree.
Operasi dasar meliputi traversal in-order, pre-order, dan post-order. In-order menghasilkan deret terurut secara menaik. Penyisipan dimulai dari akar, bandingkan nilai, gerak ke kiri bila lebih kecil, ke kanan bila lebih besar, ulangi hingga menemukan posisi kosong. Penghapusan terbagi tiga skenario: menghapus daun, simpul dengan satu anak, serta simpul dengan dua anak yang memerlukan pencarian in-order successor.
Contoh implementasi sederhana dalam Python:
class Node:
def __init__(self, key):
self.key = key
self.left = None
self.right = None
def insert(root, key):
if root is None:
return Node(key)
if key < root.key:
root.left = insert(root.left, key)
else:
root.right = insert(root.right, key)
return root
def search(root, key):
if root is None or root.key == key:
return root
if key < root.key:
return search(root.left, key)
return search(root.right, key)
Langkah-langkah penyeimbangan AVL Tree:
1. Hitung faktor keseimbangan setiap simpul setelah operasi penyisipan atau penghapusan.
2. Jika faktor lebih dari 1 atau kurang dari -1, lakukan rotasi.
3. Rotasi tunggal dilakukan pada kondisi Left-Left atau Right-Right.
4. Rotasi ganda untuk situasi Left-Right atau Right-Left.
5. Perbarui tinggi simpul dan pastikan seluruh pohon memenuhi sifat AVL.
Binary Search Tree juga menjadi fondasi bagi struktur data tingkat lanjut seperti B-Tree yang digunakan dalam sistem penyimpanan, Treap yang menggabungkan tree dan heap, serta Splay Tree yang memindahkan simpul yang sering diakses ke akar. Pemahaman mendalam tentang BST akan mempermudah menguasai topologi pohon lainnya dan meningkatkan kemampuan menyelesaikan masalah kompleks secara efisien.
Ingin menerapkan algoritma canggih seperti Binary Search Tree ke dalam aplikasi bisnis Anda? Tim Morfotech.id siap membantu membangun solusi berbasis struktur data optimal yang cepat dan andal. Konsultasikan kebutuhan software Anda melalui WhatsApp +62 811-2288-8001 atau kunjungi https://morfotech.id untuk informasi lebih lanjut.
Sumber:
AI Morfotech - Morfogenesis Teknologi Indonesia AI Team
Rabu, Oktober 8, 2025 2:06 PM