Professional Documents
Culture Documents
SDA 10.BinarySearchTree
SDA 10.BinarySearchTree
<X >X
7
9
2
1 5
3 6
3 3 1 1
2 1 2 3
3
1 2 2
1 3
class BinaryTree {
public void printInOrder( )
{
if( root != null )
root.printInOrder( );
}
}
1 5 12
3 6 14
Fasilkom UI IKI10400 Struktur Data & Algoritma 2013/14 Gasal Kuliah 1 10
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.
1 5
3 6
Fasilkom UI IKI10400 Struktur Data & Algoritma 2013/14 Gasal Kuliah 1 15
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)
sebagai anaknya. (mem-by-pass node yang
dihapus).
Kasus 3: jika node punya dua anak…..
8
12
4 Kasus 3
1 6 Kasus 2
3 5 Kasus 1
12
4
6
1
3 5
12
4
6
1
3 5
Cari node
berisi 2
7
2 9
1 5
2 7
9
1 5 Cari sucessor
Indorder
Gantikan
posisi yang
dihapus
7
9
1 5
3 9
1 5
Hapus node
ini
7
9
2 12
1 5 10 14
3 9 11
BinaryNode removeMin(BinaryNode t)
{
if (t == null) throw exception;
if (t.left != null) {
t.left = removeMin (t.left);
} else {
t = t.right;
}
return t;
}
X X X
SR SR SR
SL SL SL
k < SL + 1 k == SL + 1 k > SL + 1
if (k <= leftSize ) {
return findKth (k, t.left);
} else if (k == leftSize + 1) {
return t;
} else {
return findKth ( k - leftSize - 1, t.right);
}
}