Skip to main content
Binary Search Tree

Binary Search Tree merupakan sebuah konsep penyimpanan data, dimana data disimpan dalam bentuk tree yang setiap node dapat memiliki anak maksimal 2 node. Selain itu, terdapat juga aturan dimana anak kiri dari parent selalu memiliki nilai lebih kecil dari nilai parent dan anak kanan selalu memiliki nilai lebih besar dari parent.

Binary Search Tree adalah struktur data pohon biner berbasis node yang memiliki properti berikut:

  • Subtree kiri dari sebuah node hanya berisi node dengan kunci lebih rendah dari kunci node.
  • Subtree kanan sebuah node hanya berisi node dengan kunci lebih besar dari kunci node.
  • Subtree kiri dan kanan masing-masing juga harus berupa pohon pencarian biner.
200px-Binary_search_tree.svg


Binary Search Tree memiliki 3 oprasi dasar, yaitu :
  • Find(x)     : find value x didalam BST ( Search )
  • Insert(x)   : memasukan value baru x ke BST ( Push )
  • Remove(x)  : menghapus key x dari BST ( Delete )

Search BST
Bayangkan kita akan mencari value X.
  • Memulai Pencarian Dari Root
  • Jika Root adalah value yang kita cari , maka berhenti
  • Jika x lebih kecil dari root maka cari kedalam rekrusif tree sebelah kiri
  • Jika x lebih besar dari root maka cari kedalam rekrusif tree sebelah kanan

Insertion BST
Memasukan value (data) baru kedalam BST dengan rekrusif
Bayangkan kita menginsert value x :
  • Dimulai dari root
  • jika x lebih kecil dari node value(key) kemudian cek dengan sub-tree sebelah kiri lakukan pengecekan secara berulang ( rekrusif )
  • jika x lebih besar dari node value(key) kemudian cek dengan sub-tree sebelah kanan lakukan pengecekan secara berulang ( rekrusif )
  • Ulangi sampai menemukan node yang kosong untuk memasukan value X ( X akan selalu berada di paling bawah biasa di sebut Leaf atau daun )

Delete ( Remove )
akan ada 3 case yang ditemukan ketika ingin menghapus yang perlu diperhatikan :
  • Jika value yang ingin dihapus adalah Leaf(Daun) atau paling bawah , langsung delete
  • Jika value yang akan dihapus mempunyai satu anak, hapus nodenya dan gabungkan anaknya ke parent value yang dihapus
  • jika value yang akan di hapus adalah node yang memiliki 2 anak , maka ada 2 cara , kita bisa cari dari left sub-tree anak kanan paling terakhir(leaf)





Comments

Popular posts from this blog

Data Structure Linked List (II) Circular Linked List  Circular Linked List adalah  Linked List  di mana semua node terhubung untuk membentuk lingkaran.  Tidak ada NULL di bagian akhir.  Circular Linked List  dapat berupa  Circular  Single Linked List atau  Circular  Doubly Linked List. Circular Doubly Linked List  Circular Doubly Linked List   adalah jenis yang lebih kompleks dari Linked List yang berisi pointer ke node berikutnya serta sebelumnya dalam urutan. Sama seperti dengan Circular Single Linked List, tetapi total pointer pada setiap node adalah 2 pointer. Doubly Linked List  Doubly Linked List  adalah elemen-elemen yang dihubungkan dengan dua pointer dalam satu elemen dan list dapat melintas baik di depan (head) atau belakang (tail). Doubly Linked List berisi pointer tambahan, biasanya disebut pointer sebelumnya, bersama dengan pointer berikutnya dan data yang ada di Single Linked List. Elemen-Elemen Dalam Doubly Linked List    -  Data - Pointer Next