Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehYenny Hartono Telah diubah "7 tahun yang lalu
1
Struktur Data Binary Search Tree (BST)
Universitas Muslim Indonesia Oleh Lutfi Budi Ilmawan
2
Introduction BST merupakan jenis khusus dari binary tree yang mengorganisasikan data secara efisien untuk proses search/pencarian, update/pengubahan, dan remove/penghapusan sehingga prosesnya bisa lebih cepat. Struktur data apa yang cocok untuk menympan sekumpulan data yang dapat dimodivikasi? Array bisa, linked list bisa.
3
Introduction Struktur data yang dapat digunakan untuk menyimpan sekumpulan data yang isinya dapat dimodifikasi secara cepat. Search(x) Insert(x) Remove(x) Kita dapat menggunakan array atau linked list. Berapa running time yang dibutuhkan?
4
Kompleksitas waktu Array 1 2 3 4 5 6 7
5
Kompleksitas waktu 2 4 1 6 Array 1 2 3 4 5 6 7
6
Kompleksitas waktu Array Search(x) O(n) 2 4 1 6 1 2 3 4 5 6 7
1 2 3 4 5 6 7 Search(x) O(n) Untuk mencari nilai x, kita harus memeriksa terlebih dahulu nilai dari semua data pada array. Jika n adalah jumlah elemen dalam sebuah array. Maka dalam worst case, kompleksitas waktu untuk proses pencarian pada array adalah O(n).
7
Kompleksitas waktu Array Search(x) O(n) Insert(5) Insert(x) 2 4 1 6 1
1 2 3 4 5 6 7 Search(x) O(n) Insert(5) Insert(x) Jika masih ada cell yang kosong, maka proses penambahan data dapat dilakukan. Untuk panambahan data, kita dapat dengan mudah menambahkan 1 pada counter dari array tersebut, kemudian datanya dimasukkan.
8
Kompleksitas waktu Array Search(x) O(n) Insert(5) Insert(x) O(1) 2 4 1
6 5 Array 1 2 3 4 5 6 7 Search(x) O(n) Insert(5) Insert(x) O(1) Untuk panambahan data, kita dapat dengan mudah menambahkan 1 pada counter dari array tersebut, kemudian datanya dimasukkan pada index = counter+1
9
Kompleksitas waktu Array Search(x) O(n) Insert(5) Insert(x) O(1)
2 4 1 6 5 Array 1 2 3 4 5 6 7 Search(x) O(n) Insert(5) Insert(x) O(1) Remove(1) Remove(x) Untuk penghapusan data, terlebih dahulu kita mencari posisi dari nilai 1, kemudian menggeser nilai disebelah kanannya ke kiri, kemudian counternya dikurangi 1.
10
Kompleksitas waktu Array Search(x) O(n) Insert(5) Insert(x) O(1)
2 4 6 5 Array 1 2 3 4 5 6 7 Search(x) O(n) Insert(5) Insert(x) O(1) Remove(1) Remove(x) O(n) Proses insert cukup cepat, namun untuk proses pencarian waktu yang dibutuhkan bisa cukup lama, sebab pengecekan data dilakukan satu persatu. Misalkan waktu yang dibutuhkan untuk 1 pengecekan = 10^(-6). Misal n=10^(8) makan waktu yang dibutuhkan adalah 100 sec. Untuk mempercepat proses pencarian terlebih dahulu kita harus mengurutkan data yang ada
11
Introduction Proses insert cukup cepat, namun untuk proses pencarian waktu yang dibutuhkan bisa cukup lama, sebab pengecekan data dilakukan satu persatu. Misalkan waktu yang dibutuhkan untuk 1 pengecekan = sec. Jika dilakukan pencarian pada array yang jumlah datanya 108 (100 juta) maka waktu yang dibutuhkan = 100 sec. Untuk mempercepat proses kita dapat melakukan pencarian dengan binary search dengan syarat nilai dalam array telah terurut. Kompleksitas waktunya = 0(log n).
12
Introduction Operasi Array (unsorted) Linked List Array (sorted)
Search(x) O(n) O(log2 n) Insert(x) O(1) Remove(x) Pada binary search, untuk n jumlah data, jumlah pengecekan yang dilakukan adalah log2 n. dan untuk melakukan 1 pengecekan = 10^(-6) Maka jika terdapat data 2^(11) maka waktu yang dibutuhkan adalah 11*10^(-6) atau 11 microsecond.
13
Introduction Operasi Array (unsorted) Linked List Array (sorted)
BST (balanced) Search(x) O(n) O(log2 n) Insert(x) O(1) Remove(x) Pada binary search, untuk n jumlah data, jumlah pengecekan yang dilakukan adalah log2 n. dan untuk melakukan 1 pengecekan = 10^(-6) Maka jika terdapat data 2^(11) maka waktu yang dibutuhkan adalah 11*10^(-6) atau 11 microsecond.
14
Binary Search Tree (BST)
BST adalah suatu tree di mana untuk setiap node-nya, nilai dari left subtree-nya(cabang sebelah kiri) lebih kecil atau sama dengan, dan nilai dari right subtree-nya (cabang sebelah kanan) lebih besar. root BST BST Left subtree (lebih kecil) Right subtree (lebih besar)
15
Contoh BST 15 10 20 8 12 17 25
16
Contoh BST 15 10 20 8 16 17 25
17
Implementasi BST BST dapat diimplementasikan pada c++, strukturnya sama dengan linked list, tiap node terhubung melalui pointer.
18
Deklarasi struct BstNode{ int data; BstNode *left; BstNode *right; };
BstNode *root=NULL;
19
Binary Tree Traversal Definisi: Proses mengunjungi (visiting) setiap node pada sebuah tree tepat satu kali dengan menggunakan urutan tertentu. Visiting membaca atau memproses data dalam sebuah node.
20
Binary Tree Traversal Breadth-first Level order Depth-first
Preorder <root><left><right> Inorder <left><root><right> Postorder <left><right><root>
21
Hapus Node pada BST Kasus I Jika node tidak memiliki child
Kasus II Jika node memiliki 1 child Kasus III Jika node memiliki 2 child Kasus I: referencenya dipotong, nodenya dihapus. Kasus II: reference berubah menunjuk pada childnya. Kasus III: Temukan nilai min pada right sub-tree Copy nilai min tersebut pada lokasi node yang ingin dihapus Hapus nilai yang terduplikasi.
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.