![Page 1: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/1.jpg)
Struktur Data dan Algoritma
Suryana Setiawan, Ruli Manurung & Ade Azurat(acknowledgments: Denny)
Fasilkom UI
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2009/2010 – Ganjil – Minggu 9
Binary Search Tree
![Page 2: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/2.jpg)
2SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Tujuan
Memahami sifat dari Binary Search Tree (BST)
Memahami operasi-operasi pada BST
Memahami kelebihan dan kekurangan dari
BST
![Page 3: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/3.jpg)
3SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Outline
Properties of Binary Search Tree (BST)
Operation
Insert
find
remove
![Page 4: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/4.jpg)
4SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Properties of Binary Search Tree
Untuk setiap node X pada tree, nilai elemen
pada subtree sebelah kiri selalu lebih kecil dari
elemen node X dan nilai elemen pada subtree
sebelah kanan selalu lebih besar dari elemen
node X.
Jadi object elemen harus comparable.
X
<X >X
![Page 5: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/5.jpg)
5SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Binary Search Tree
936
5127
![Page 6: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/6.jpg)
6SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
7
2
3
9
1 5
6
Binary Search Tree
![Page 7: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/7.jpg)
7SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
3
2
1
3
1
2
2
1 3
1
3
2
1
2
3
Binary Search Tree
![Page 8: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/8.jpg)
8SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Basic Operations
insert
findMin and findMax
remove
cetak terurut
![Page 9: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/9.jpg)
9SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Print InOrderclass BinaryNode {
void printInOrder( )
{
if( left != null )
left.printInOrder( ); // Left
System.out.println( element ); // Node
if( right != null )
right.printInOrder( ); // Right
}
}
class BinaryTree {
public void printInOrder( )
{
if( root != null )root.printInOrder( );
}
}
![Page 10: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/10.jpg)
10SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Insertion
Penyisipan sebuah elemen baru dalam binary
search tree, elemen tersebut pasti akan
menjadi leaf
10
2
3
15
1 5
6
12
14
![Page 11: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/11.jpg)
11SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Insertion: algorithm
Menambah elemen X pada binary search tree:
mulai dari root.
Jika X lebih kecil dari root, maka X harus diletakkan
pada sub-tree sebelah kiri.
jika X lebih besar dari root, then X harus diletakkan
pada sub-tree sebelah kanan.
Ingat bahwa: sebuah sub tree adalah juga
sebuah tree. Maka, proses penambahan elemen
pada sub tree adalah sama dengan
penambahan pada seluruh tree. (melalui root
tadi)
Apa hubungannya?
permasalahan ini cocok diselesaikan secara rekursif.
![Page 12: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/12.jpg)
12SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
BinaryNode insert(int x, BinaryNode t)
{
if (t == null) {
t = new BinaryNode (x, null, null);
} else if (x < t.element) {
t.left = insert (x, t.left);
} else if (x > t.element) {
t.right = insert (x, t.right);
} else {
throw new DuplicateItem(“exception”);
}
return t;
}
Insertion
![Page 13: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/13.jpg)
13SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
BinaryNode findMin (BinaryNode t)
{
if (t == null) throw exception;
while (t.left != null) {
t = t.left;
}
return t;
}
FindMin
Mencari node yang memiliki nilai terkecil.
Algorithm:
ke kiri terus sampai buntu….:)
Code:
![Page 14: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/14.jpg)
14SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
FindMax
Mencari node yang memiliki nilai terbesar
Algorithm?
Code?
![Page 15: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/15.jpg)
15SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Find
Diberikan sebuah nilai yang harus dicari
dalam sebuah BST. Jika ada elemen tersebut,
return node tersebut. Jika tidak ada, return
null.
Algorithm?
Code?
7
2
3
9
1 5
6
![Page 16: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/16.jpg)
16SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Remove
Kasus 1: jika node adalah leaf (tidak punya
anak), langsung saja dihapus.
Kasus 2: jika node punya satu anak: node
parent menjadikan anak dari node yang
dihapus (cucu) sebagian anaknya. (mem-by-
pass node yang dihapus).
Kasus 3: jika node punya dua anak…..
![Page 17: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/17.jpg)
17SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
8
4
5
12
1 6
3
Remove
5
6
4
Kasus 1
Kasus 2
Kasus 3
![Page 18: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/18.jpg)
18SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Removing 6
8
4
5
12
1 6
3
![Page 19: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/19.jpg)
19SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
After 6 removed
8
5
12
1
3
4
6
![Page 20: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/20.jpg)
20SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Remove (lanj.)
Bagaimana bila node punya dua anak?
1. Hapus isi node (tanpa mendelete node)
2. Gantikan posisinya dengan:
Succesor Inorder node terkecil dari sub tree
kanan, dilanjutkan dengan melakukan
removeMin di subtree kanan.
[Alternatif: dengan kaidah Predecesor Inorder,
2. Gantikan posisinya dengan:
Predecesor Inorder, node terbesar dari sub
tree kiri, dilanjutkan dengan melakukan
removeMax di subtree kiri.]
![Page 21: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/21.jpg)
21SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
7
3
9
1 5
4
Removing 2 (Sucessor Inorder)
Cari node
berisi 2
22
![Page 22: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/22.jpg)
22SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
7
9
1 5
4
Removing 2 (Sucessor Inorder)
2
Cari sucessor
Indorder
33
![Page 23: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/23.jpg)
23SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
7
9
1 5
4
Removing 2 (Sucessor Inorder)
3
Gantikan
posisi yang
dihapus
![Page 24: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/24.jpg)
24SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
After 2 deleted
7
3 9
1 5
4
Hapus node
ini
![Page 25: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/25.jpg)
25SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Removing Root
7
2
3
12
1 5
4
10 14
9 11
9
![Page 26: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/26.jpg)
26SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
removeMin
BinaryNode removeMin(BinaryNode t)
{
if (t == null) throw exception;
if (t.left != null) {
t.left = removeMin (t.left);
} else {
t = t.right;
}
return t;
}
![Page 27: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/27.jpg)
27SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Remove
BinaryNode remove(int x, BinaryNode t) {
if (t == null) throw exception;
if (x < t.element) {
t.left = remove(x, t.left);
} else if (x > t.element) {
t.right = remove(x, t.right);
} else if (t.left != null && t.right != null) {
t.element = findMin(t.right).element;
t.right = removeMin(t.right);
} else {
t = (t.left != null) ? t.left : t.right;
}
return t;
}
![Page 28: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/28.jpg)
28SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
removeMax
code?
![Page 29: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/29.jpg)
29SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
SL
SR
X
k < SL + 1
SL
SR
X
k == SL + 1
SL
SR
X
k > SL + 1
Find k-th element
![Page 30: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/30.jpg)
30SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Find k-th element
BinaryNode findKth(int k, BinaryNode t)
{
if (t == null) throw exception;
int leftSize = (t.left != null) ?
t.left.size : 0;
if (k <= leftSize ) {
return findKth (k, t.left);
} else if (k == leftSize + 1) {
return t;
} else {
return findKth ( k - leftSize - 1, t.right);
}
}
![Page 31: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/31.jpg)
31SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Analysis
Running time:
insert?
Find min?
remove?
Find?
Worst case: O(n)
![Page 32: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/32.jpg)
32SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Rangkuman
Binary Search Tree menjamin urutan elemen
pada tree.
Tiap node harus comparable
Semua operasi membutuhkan O(log n) -
average case, saat tree relatif balance.
Semua operasi membutuhkan O(n) - worst
case, tinggi dari tree sama dengan jumlah
node.
![Page 33: Struktur Data dan Algoritma - aren.cs.ui.ac.idaren.cs.ui.ac.id/sda/resources/sda2010/11_bst.pdf · Jadi object elemen harus comparable. X X. ... Jika X lebih kecil dari](https://reader031.vdocuments.pub/reader031/viewer/2022022523/5b3454b27f8b9a436d8be21e/html5/thumbnails/33.jpg)
33SUR – HMM – AA Fasilkom UI – IKI20100/IKI80110P 2009/2010 – Ganjil – Minggu 9
Selanjutnya:
Sejauh ini struktur Binary Search terbentuk
dengan asumsi data cukup acak sehingga
seluruh bagian tree akan cukup terisi.
Benarkah asumsi tersebut?
Jika tidak benar, maka akan terbentuk tree
yang “tidak balance” yang berakibat tidak
tercapainya performance O(log n)
Solusi?
Dalam kuliah yad akan dibahas struktur
binary tree dengan kemampuan auto-
balancing AVL tree