bab 10 tree_lanjutan
TRANSCRIPT
![Page 1: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/1.jpg)
Tree Lanjutan
![Page 2: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/2.jpg)
Kunjungan Pohon (Tree Traversal)
• Tree traversal adalah bagaimana mengunjungi node-node pada pohon biner
• 3 Cara Kunjungan Pohon :– Pre-order– In-order– Post-order
![Page 3: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/3.jpg)
Pre-Order Traversal
• Pre-order traversal1. Cetak data pada root
2. Secara rekursif mencetak seluruh data pada subpohon kiri
3. Secara rekursif mencetak seluruh data pada subpohon kanan
![Page 4: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/4.jpg)
In-Order Traversal
• In-order traversal1.Secara rekursif mencetak seluruh data pada
subpohon kiri
2.Cetak data pada root
3.Secara rekursif mencetak seluruh data pada subpohon kanan
![Page 5: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/5.jpg)
Post-order Traversal
• Post-order traversal1.Secara rekursif mencetak seluruh data pada
subpohon kiri
2.Secara rekursif mencetak seluruh data pada subpohon kanan
3.Cetak data pada root
![Page 6: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/6.jpg)
Contoh : Pohon Ekspresi
![Page 7: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/7.jpg)
Pre-Order, Post-Order, In-Order
• Pre-order :– Node, left, right– Ekspresi Prefix : ++a*bc*+*defg
• Post-order :– Node, left, right– Ekspresi Postfix : abc*+de*f+g*+
• In-order :– Node, left, right– Ekspresi Infix : a+b*c+d*e+f*g
![Page 8: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/8.jpg)
Algoritma Preorder
![Page 9: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/9.jpg)
Algoritma Postorder
![Page 10: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/10.jpg)
Algoritma Inorder
![Page 11: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/11.jpg)
Binary Search Tree
• Properti Binary Search Tree :– Untuk setiap node X, semua elemen di
subpohon kirinya bernilai lebih kecil dari nilai X dan semua elemen di subpohon kanannya bernilai lebih besar dari nilai X.
![Page 12: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/12.jpg)
Contoh
Binary Search Tree Bukan Binary Search Tree
![Page 13: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/13.jpg)
Pencarian pada BST
• Jika mencari elemen bernilai 15, maka akan langsung ditemukan.
• Jika mencari elemen bernilai < 15, maka kita cari di subpohon kiri.
• Jika mencari elemen bernilai > 15, maka kita cari di subpohon kanan.
![Page 14: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/14.jpg)
![Page 15: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/15.jpg)
Inorder traversal thd BST
• Mencetak semua elemen pada BST
Inorder: 2, 3, 4, 6, 7, 9, 13, 15, 17, 18, 20
![Page 16: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/16.jpg)
findMin/ findMax
• findMin : mengembalikan node dengan elemen terkecil pada BST
• Pencarian dimulai dari root dan bergerak ke kiri terus sepanjang subpohon kiri dan berhenti pada elemen terakhir.
• Proses serupa terhadap metode findMax
![Page 17: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/17.jpg)
Insert• Dimulai dengan
penelusuran dari root untuk mencari posisi yang tepat.
• Jika elemen X ditemukan (berarti X sudah ada di BST), maka tidak perlu melakukan aksi apapun.
• Jika tidak, maka letakkan X sebagai node terakhir pada jalur penelusuran
• Time complexity = O(height of the tree)
![Page 18: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/18.jpg)
Delete
• Saat akan menghapus sebuah node, kita juga harus memikirkan seluruh node anak dari node tsb.– Hal penting adalah agar pohon setelah
dihapus tetap merupakan BST.
![Page 19: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/19.jpg)
DeleteTerdapat 3 kasus pada penghapusan :
(1) Node yang dihapus adalah daun– Langsung dihapus
(2) Node yang dihapus hanya punya 1 anak– Arahkan pointer (buat cabang baru) dari induk node
langsung ke anaknya
![Page 20: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/20.jpg)
Delete (Kasus 2)
![Page 21: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/21.jpg)
Delete(3) Node yang dihapus punya 2 anak
– Ganti nilai dari node yang dihapus dengan nilai terkecil dari subpohon kanannya
– Delete element terkecil
![Page 22: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/22.jpg)
Delete (Kasus 3)
– Proses penghapusan dapat menyebabkan terulangnya 3 kasus di atas.
![Page 23: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/23.jpg)
AVL Tree
• AVL Properti :– Sebuah node memiliki AVL property jika height (tinggi) subpohon kiri & subpohon kanan node tsb sama atau berbeda 1.
– Height (tinggi) pohon adalah jarak dari root menuju daun terbawah yang dimiliki pohon tsb
• AVL Tree adalah pohon yang setiap node nya memiliki AVL property
![Page 24: Bab 10 tree_lanjutan](https://reader034.vdocuments.pub/reader034/viewer/2022042522/55a09c081a28ab546a8b472b/html5/thumbnails/24.jpg)
AVL Tree