21
BINARY SEARCH TREE

Binary Search Tree

Embed Size (px)

Citation preview

Page 1: Binary Search Tree

BINARY SEARCH TREE

Page 2: Binary Search Tree

Binary Search Tree

• Adalah binary tree dengan sifat bahwa semua left child lebih kecil daripada right child dan parent. Juga semua right child harus lebih besar dari left child serta parentnya.

• Binary search tree dibuat untuk mengatasi kelemahan pada binary tree biasa, yaitu kesulitan dalam searching / pencarian node tertentu dalam binary tree.

Page 3: Binary Search Tree

• contoh

Binary Search Tree

10 23

18

5 14 21 33

17 403 7

Page 4: Binary Search Tree

• Pada dasarnya operasi dalam binary search tree sama dengan operasi binary tree biasa, kecuali pada operasi insert, update dan delete.

• Insert pada binary search tree dilakukan setelah ditemukan lokasi yang tepat (lokasi tidak ditentukan oleh user sendiri)

Binary Search Tree

Page 5: Binary Search Tree

• Latihan: Buat binary search tree dari data berikut: 12 -15-13-9-5-11-20-17-6-18-19-23-21-10

Binary Search Tree

Page 6: Binary Search Tree

• Delete

9 15

12

5 11 13 20

Binary Search Tree

Page 7: Binary Search Tree

• Delete (5) : karena node yang berisi 5 adalah leaf, maka ia dapat langsung dihapus

Binary Search Tree

9 15

12

11 13 20

Page 8: Binary Search Tree

• Delete (20): karena node berisi 20 adalah leaf, maka ia dapat langsung dihapus.

Binary Search Tree

9 15

12

11 13

Page 9: Binary Search Tree

• Delete (12) : Pada operasi di samping delete dilakukan terhadap node dengan 2 child. Maka untuk menggantikannya, diambil node paling kiri dari right subtree yaitu 13

Binary Search Tree

9 15

13

11

Page 10: Binary Search Tree

• Delete (9) : Pada operasi di samping, delete dilakukan terhadap node dengan 1 child, maka child tersebut (11) akan menggantikan posisi dari node yang didelete

11 15

13

Binary Search Tree

Page 11: Binary Search Tree

• Delete (15) :

11

13

Binary Search Tree

Page 12: Binary Search Tree

AVL TREE• Adalah Binary search tree yang memiliki perbedaan

tinggi/level antara subtree kiri dan subtree kanan maksimal 1. AVL Tree muncul untuk menyeimbangkan Binary Search Tree. Dengan AVL Tree, waktu pencarian dan bentuk tree dapat dipersingkat dan disederhanakan.

• Selain AVL Tree, terdapat pula Heght Balanced n Tree, yakni Binary Search Tree yang memiliki perbedaan level antara subtree kiri dan subtree kanan maksimal adalah n. Sehingga AVL Tree adalah Height Balanced 1 Tree

Page 13: Binary Search Tree

• Untuk mempermudah menyeimbangkan tree, maka digunakan simbol-simbol bantu:

• - (tanda minus): digunakan apabila subtree kiri lebih panjang dari subtree kanan.

• + (tanda plus) : digunakan apabila subtree kanan lebih panjang dari subtree kiri.

• 0 (nol) : digunakan apabila subtree kiri dan subtree kanan mempunyai height yang sama.

AVL TREE

Page 14: Binary Search Tree

AVL TREE

• Pada gambar 1 (a) dan (b) adalah AVL tree sedangkan (c) bukan AVL tree karena node B mempunyai selisih left subtree

dan right subtree sebanyak 2 level.

Page 15: Binary Search Tree

Penambahan Node Ke AVL Tree

• Penambahan node ke AVL tree mirip penembahan node pada BST, penelusuran mulai dari root, apabila nilai node yang mau ditambahkan lebih kecil daripada nilai node pembanding maka penelusuran pindah ke anak sebelah kiri (left child). Apabila nilai node yang mau ditambahkan lebih besar daripada nilai node pembanding maka penelusuran pindah ke node sebelah kanan (right child). Setelah node baru dikaitkan pada pohon dilakukan pemeriksaan apakah selisih tinggi pada setiap node tidak lebih dari satu level.

• Apabila selisih tinggi lebih dari satu level maka dilakukan pembenahan dengan algoritma single rotation atau double rotation.

Page 16: Binary Search Tree

Single Rotation• Single rotation dilakukan bila kondisi AVL tree waktu akan

ditambahkan node baru dan posisi node baru seperti pada gambar 5. T1, T2, dan T3 adalah subtree yang urutannya harus seperti demikian serta heightnya harus sama (≥ 0). Hal ini juga berlaku untuk AVL tree yang merupakan citra cermin (mirror image) gambar 5.

Page 17: Binary Search Tree

• Misalkan terhadap AVL tree pada gambar 6 akan ditambahkan node bernilai kunci 5. Search path melalui node 60, 40, 20, 10 dan pivot node adalah node dengan nilai 40.

• Pohon ini sesuai dengan pola pohon untuk single rotation. T1 adalah subtree dengan node 20, T2 adalah subtree dengan node 30, dan T3 adalah subtree dengan node 50. Ketiga subtree ini tingginya satu level.

• Node baru yang ditambahkan akan menjadi leftchild dari T1. Lihat gambar 7 kiri. Maka rotasi membentuk AVL tree seperti gambar 7 kanan.

Single Rotation

Page 18: Binary Search Tree

Gambar 6

Single Rotation

Page 19: Binary Search Tree

Gambar 7

Single Rotation

Page 20: Binary Search Tree

Soal Double Rotation

• Misalkan terhadap AVL tree pada gambar 11 akan ditambahkan node bernilai kunci 25. Search path melalui node 60, 20, 40, 30 dan pivot node adalah node dengan nilai 60.

• Pohon ini sesuai dengan pola pohon untuk double rotation. T1 adalah subtree dengan node 10 dan 5 (tingginya 2 level), T2 adalah subtree dengan node 30 (tingginya 1 level), T3 adalah subtree dengan node 50 (tingginya 1 level). Dan T4 adalah subtree dengan node 80 dan 100 (tingginya 2 level). T1 dan T4 mempunyai tinggi yang sama, demikian pula denan T2 dan T3. Node baru yang ditambahkan akan menjadi leftchild dari T2.

Page 21: Binary Search Tree

Gambar 11

Soal Double Rotation