Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehSonny Indradjaja Telah diubah "7 tahun yang lalu
1
Struktur Data Tree Eka Rahayu S. (2 Agustus 2011)
2
Topik Bahasan Struktur data TREE Operasi dalam TREE
Rekursi (untuk kepentingan TREE)
3
Tree Root 8 6 10 12 7 4 11 3 1 14 15 13 19 20 18 17 21 22 Node/ Vertex/ Point Edge/ Branch / Line 4 8 6 10 12 7 4 11 3 1 14 15 13 19 20 18 17 21 22 Height Subtree Leaf Balanced Tree: Sebuah Tree dikatakan seimbang ketika rata-rata tinggi tiap subtree adalah sama
4
Binary Tree 8 6 10 12 7 4 11 Max: 2 cabang
(cabang kiri dan cabang kanan) 8 6 10 12 7 4 11 Cabang kiri Untuk nilai yang lebih kecil Cabang kanan Untuk nilai yang lebih besar atau sama dengan
5
Jenis Tree yang Lain Termasuk dalam golongan n-ary Tree
Binary Tree (max 2 cabang) Ternary Tree (max 3 cabang) Binary Search Tree Red Black Tree (ada warna pada tiap node) AA-Tree (penyederhanaan RB-Tree) AVL Tree (Adelson-Velskii dan Landis) Multiway Tree B-Tree
6
Implementasi Tree dalam Linked List
Head 1 2 5 6 8 10 4 3 7 9
7
Nyicil: mari kita buat struktur data tree dengan [double] linked list
8
Operasi dalam Tree Insert (menambahkan nilai)
Traverse (menelusuri tiap node tree) Search (mencari suatu nilai) Delete (menghapus nilai) Sumber:
9
[1] Proses Insert Jika root masih kosong Node baru adalah root
Jika tidak (root sudah terbentuk) Cari posisi yang masih kosong Jika LEBIH KECIL, cari posisi kiri Jika LEBIH BESAR, cari posisi kanan Node baru menempati posisi kosong tersebut
10
.: insert :. Perintah: INSERT 7 INSERT 5 INSERT 6
Cek, apakah node baru lebih KECIL dari yang ditunjuk saat ini? Jika iya, maka telusuri sisi KIRInya. Ternyata root sudah terisi. Maka cari posisi kosong untuk node baru. Cek kembali, apakah root masih kosong? Ulangi kembali: Cek, apakah node baru lebih KECIL dari yang ditunjuk saat ini? Jika iya, maka telusuri sisi KIRInya. Jika ternyata node baru lebih BESAR dari node yang ditunjuk saat ini, maka telusuri KANAN nya. Begitu terus selanjutnya untuk setiap kali proses insert.... Ternyata posisi saat ini sudah terisi, Sehingga tidak bisa diisi node baru. Maka, harus dilakukan penelusuran kembali. Kebetulan, kanannya masih kosong. Maka, tambahkan node baru ke cabang kanan. Kebetulan, cabang kirinya masih kosong, maka node baru ditambahkan pada cabang kirinya. Ternyata root sudah ada isinya. Maka, cari posisi kosong untuk node baru. Cek apakah root nya masih kosong? Maka, jadikan node baru sebagai root. Kondisi awal, root masih kosong. Jika node baru lebih KECIL dari node yang ditunjuk, maka telusuri cabang kirinya. Perintah: INSERT 7 INSERT 5 INSERT 6 root 7 7 6 7 5 5
11
Cobalah! Insert 9 Insert 15 Insert 5 Insert 7 Insert 10 Insert 19
Bagaimanakah bentuk TREE nya?
12
Nyicil: Coba lengkapi Tree yang tadi kita buat dengan procedure insert!
13
[2] Proses Traverse Breadth First Search (BFS)
Pencarian yang melebar (pada setiap level) Memanfaatkan Queue Depth First Search (DFS) Pencarian yang mendalam Dilakukan secara recursive Ada 3 jenis: Pre-order traversal In-order traversal Post-order traversal
14
Breadth First Search (breadth = melebar)
Queue untuk pengaksesan: Dari 10, telusuri semua childnya FIFO: maka DELETE 6 Lanjutkan: expand semua child 6 DELETE lagi 1 node, yaitu 10 Dan seterusnya.... Expand semua child dari 8 DELETE dari queue (dapat 8) Pertama, expand dari root 8 6 10 12 7 4 11 3 1 14 15 13 19 20 18 17 21 22 8 6 10 15 13 4 7 3 1 Intinya.... Setiap proses dilakukan ke kanan. Menelusuri semua child dalam satu level, dilanjutkan dengan level dibawahnya.
15
Depth First Search (depth = kedalam)
10 6 12 11 7 4 13 14 10 Ingat kembali bahwa TREE termasuk dalam struktur data yang ORDERed. 6 6 4 4 7 3 5 1 3 3 5 8 5 null null null 1 1 Proses dilakukan dengan recursive: Menelusuri cabang kiri hingga null Setelah itu baru menelusuri cabang kanannya Dari cabang kanan, ditelusuri lagi cabang kirinya dst null null
16
Ingat kembali... Apa perbedaan BFS dan DFS?
17
x-Order Traversal In-Order Traversal
subtree kiri – root – subtree kanan Pre-Order Traversal root – subtree kiri – subtree kanan Post-Order Traversal subtree kiri – subtree kanan – root
18
Contoh! 10 6 19 21 5 17 15 IN : 5, 6, 10, 15, 17, 19, 21 (subtree kiri saat di kanan, subtree kanan saat di kiri) PRE : 10, 6, 5, 19, 15, 17, 21 (saat penelusur ada di kiri) POST : 5, 6, 17, 15, 21, 19, 10 (saat penelusur ada di kanan)
19
[3] Proses Search Dilakukan dengan memafaatkan proses Traverse
(saat pertama kali sebuah node berwarna abu-abu pada contoh di slide sebelumnya)
20
Nah.... Masalahnya, masihkah Anda ingat bagaimana Recursive?
21
[4] Proses Delete Cari node yang akan dihapus
Jika node tersebut tidak punya child, langsung hapus Namun jika punya satu child, arahkan pointer parent ke child dari node yang akan dihapus Namun jika node yang akan dihapus punya dua anak: Opsi 1: cari child paling kanan dari subtree kiri, sebut sebagai replacer Opsi 2: cari child paling kiri dari subtree kanan, sebut sebagai replacer Ganti node yang akan dihapus dengan replacer
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.