Title: Algoritma dan Struktur Data
1Algoritma dan Struktur Data
- Linear Binary Search Tree
2Linear Search
struct int key int data table100 int
n int search(int key) int i i0 while (i
lt n) if(tablei.keykey) return(tablei.d
ata) i return -1
statement
(1)
(2)
(3)
(4)
(5)
(6)
3Cara kerja Linear Search
key
data
1
3
4
8
13
14
18
20
21
130
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3 4 5
6 7 8 99
4Cara kerja Linear Search
key
data
search(18)
i0
1
3
4
8
13
14
18
20
21
130
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3 4 5
6 7 8 99
5Cara kerja Linear Search
key
data
search(18)
i1
1
3
4
8
13
14
18
20
21
130
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3 4 5
6 7 8 99
6Cara kerja Linear Search
key
data
search(18)
i2
1
3
4
8
13
14
18
20
21
130
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3 4 5
6 7 8 99
7Cara kerja Linear Search
key
data
search(18)
i3
1
3
4
8
13
14
18
20
21
130
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3 4 5
6 7 8 99
8Cara kerja Linear Search
key
data
search(18)
i4
1
3
4
8
13
14
18
20
21
130
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3 4 5
6 7 8 99
9Cara kerja Linear Search
key
data
search(18)
i5
1
3
4
8
13
14
18
20
21
130
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3 4 5
6 7 8 99
10Cara kerja Linear Search
key
data
search(18)
i6
1
3
4
8
13
14
18
20
21
130
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3 4 5
6 7 8 99
11Cara kerja Linear Search
key
data
search(18)
i6
1
3
4
8
13
14
18
20
21
130
10
12
14
16
18
20
22
24
26
26
return(table6.data) 22
12Binary Search
int binary_search(int key) int low, high,
middle low 0 high n-1 while (low lt
high) middle (lowhigh) / 2 if (key
tablemiddle.key) return(tablemiddle.data)
else if(key lt tablemiddle.key) high
middle 1 else low middle
1 return -1
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
13Cara kerja Binary Search
key
data
binary_search(14)
n10
low0
high9
middle4
1
3
4
8
13
14
18
20
21
25
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3
4 5 6 7 8
9
Syarat Binary Search Data harus sudah terurut
(sorted)
14Cara kerja Binary Search
key
data
binary_search(14)
n10
high9
low5
1
3
4
8
13
14
18
20
21
25
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3
4 5 6 7 8
9
Syarat Binary Search Data harus sudah terurut
(sorted)
15Cara kerja Binary Search
key
data
binary_search(14)
n10
high9
middle7
low5
1
3
4
8
13
14
18
20
21
25
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3
4 5 6 7 8
9
Syarat Binary Search Data harus sudah terurut
(sorted)
16Cara kerja Binary Search
key
data
binary_search(14)
n10
high
low
1
3
4
8
13
14
18
20
21
25
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3
4 5 6 7 8
9
Syarat Binary Search Data harus sudah terurut
(sorted)
17Cara kerja Binary Search
key
data
binary_search(14)
n10
high
low middle
1
3
4
8
13
14
18
20
21
25
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3
4 5 6 7 8
9
Syarat Binary Search Data harus sudah terurut
(sorted)
18Cara kerja Binary Search
key
data
binary_search(14)
n10
middle
1
3
4
8
13
14
18
20
21
25
10
12
14
16
18
20
22
24
26
26
table 0 1 2 3
4 5 6 7 8
9
return(table5.data) 20
Syarat Binary Search Data harus sudah terurut
(sorted)
19Penambahan Data pada Linear Search
Data yang ingin ditambahkan
17
31
1
3
4
8
13
14
18
20
21
25
10
12
14
16
18
20
22
24
26
26
Ditaruh di paling belakang
1
3
4
8
13
14
18
20
21
25
17
10
12
14
16
18
20
22
24
26
26
31
20Penambahan Data pada Binary Search
Data yang ingin ditambahkan
17
Mencari tempat menaruh data
31
1
3
4
8
13
14
18
20
21
25
10
12
14
16
18
20
22
24
26
26
1
3
4
8
13
14
18
20
21
25
10
12
14
16
18
20
22
24
26
26
Menggeser data dengan nilai lebih besar ke
belakang
21Penambahan Data pada Linear Search
Data yang ingin ditambahkan
17
Mencari tempat menaruh data
31
1
3
4
8
13
14
18
20
21
25
10
12
14
16
18
20
22
24
26
26
1
3
4
8
13
14
18
20
21
25
17
10
12
14
16
18
20
22
24
26
26
31
22Apakah Binary Search Tree itu ?
- Pemakaian tree structure dalam proses pencarian
(search) - Sifat Binary Tree
- Pada sebuah node x,
- elemen yang berada di LEFT sub-tree selalu lebih
KECIL daripada x - elemen yang berada di RIGHT sub-tree selalu lebih
BESAR Atau SAMA DENGAN daripada x - Binary Search Tree proses pencarian (SEARCHING)
berbasis binary tree
23Operasi pada BST
- Traversals
- Searches
- Insertion
- Deletion
24Example of a binary search tree
25Traversals
- Preorder traversal
- 23 18 12 20 44 35 52
- Postorder traversal
- 12 20 18 35 52 44 23
- Inorder traversal
- 12 18 20 23 35 44 52
Inorder traversal pada BST menghasilkan nilai
yang terurut dari kecil ke besar
26Proses Pencarian (contoh SUKSES)
search(7)
7lt13
7gt5
77 Data yang dicari BERHASIL ditemukan
13?5 ?7
27Proses Pencarian (contoh GAGAL)
search(8)
8lt13
8gt5
8gt7
Data tidak ada
Data yang dicari GAGAL ditemukan
28Proses Pencarian
6
search(7)
5
21
2
15
6?21 ?15?13 ?7
13
7
8
29(No Transcript)
30Find the smallest node
31Find the smallest node
32Find the largest node
right subtree not empty
right subtree not empty
right subtree empty return
33Proses Penambahan (INSERTION)
insert(8)
8lt13
8gt5
8gt7
Data tidak ada
Data yang dicari GAGAL ditemukan disitulah
data ditambahkan (insertion)
34Penambahan Data pada Binary Search Tree
Tambahkan node
6
5
21
2
15
13
7
8
35Penambahan Data pada Binary Search Tree
6
5
21
2
15
13
8
7
-
(b) - Perhatikan
- (b) lebih bercabang/panjang daripada (a),
akibatnya - proses pencarian pada (b) lebih lama daripada (a)
8
36(No Transcript)
37Penghapusan Data pada Binary Search Tree
- Proses penghapusan data pada binary search tree
lebih rumit daripada proses searching maupun
proses insertion - Tahapan
- Carilah node yang akan dihapus
- Apabila node tersebut leaf (tidak mempunyai
anak), hapuslah node tersebut - Bila node tersebut memiliki 1 anak, setelah node
dihapus, anaknya menggantikan posisi orangtuanya
(node yang dihapus)
9
9
hapus 1
5
5
1
7
7
38Penghapusan Data pada Binary Search Tree
9
9
hapus 5
5
14
14
3
3
1
4
1
4
39Penghapusan Data pada Binary Search Tree
- Proses penghapusan data pada binary search tree
lebih rumit daripada proses searching maupun
proses insertion - Tahapan
- Carilah node yang akan dihapus
- Apabila node tersebut leaf (tidak mempunyai
anak), hapuslah node tersebut - Bila node tersebut memiliki 1 anak, setelah node
dihapus, anaknya menggantikan posisi orangtuanya
(node yang dihapus) - Bila node tersebut memiliki 2 anak, setelah node
dihapus, gantikan node tersebut dengan - elemen terkecil dari right sub-tree ATAU
- elemen terbesar dari left sub-tree
40Penghapusan Data pada Binary Search Tree
20
20
hapus 7
7
23
10
23
29
29
4
4
18
18
2
5
2
5
10
15
15
41Menghapus node dengan nilai terkecil
node yang dihapus leaf (tidak mempunyai anak)
13
13
hapus 2
5
20
5
20
2
7
7
42Menghapus node dengan nilai terkecil
node yang mempunyai 1 anak
13
13
hapus 5
5
20
20
10
10
7
11
7
11
43/ dltKey root /
44(continued)