Sie sind auf Seite 1von 38

Pertemuan 8

TREE
Struktur Data


2013
Pohon Bener Pohon Biner
Akar
Cabang
Daun
Vs
Tree : Struktur data berhirarkhi
Why Tree ?
Ada problem yang secara alamiah memang berhirarki :
silsilah, kepengurusan organisasi, taksonomi, dsb
Pengorganisasian informasi atau data :
data / informasi global dibagi-bagi berdasarkan tingkatannya
Memudahkan pengambilan dan penyusunan informasi (proses retrieve
data) :
secara linier ketua, bendahara, sekretaris1, ketua seksi,
anggota seksi, dll.
secara hirarkhi
Ketua
Bendahara Sekretaris
Ketua
Seksi
Ketua
Seksi
Modus Penggunaan Tree
Modus Struktur Tetap
Sejak awal sampai akhir program tetap (hampir tidak mengalami
perubahan jika mengalami tidak terlalu penting karena tidak
merubah susunan).
Contoh : Pohon Silsilah

Modus Struktur Dinamis
Senantiasa berubah dari awal sampai akhir program (perlu
dilengkapi dengan fasilitas untuk menangani perubahan susunan)

Terminologi Tree
A
D
B
C
E F G
Tree
Sejumlah node yang berhubungan secara hirarkis
dimana node-node pada hirarki lebih rendah merupakan
cabang dari node dengan hirarki yang lebih tinggi
Root
Node dari suatu tree yang memiliki hirarki paling tinggi
Leaf
Node yang tidak mempunyai cabang
Inner
Node yang bukan leaf
Edge
Penghubung antara dua buah node

Predecessor
Node yang berada di atas node tertentu

Successor
Node yang berada di bawah node tertentu

Ancestor/nenek moyang
Seluruh node yang terletak sebelum node tertentu pada
jalur yang sama

Descendant/Keturunan
Seluruh node yang terletak sesudah node tertentu pada
jalur yang sama

Parent (ayah)
Node pada hirarki langsung diatas node tersebut
(predecessor satu level)

Child
Node pada hirarki langsung dibawah node tersebut
(successor satu level)


Terminologi Tree
A
D
B
C
E F G
Sibling
Node-node yang satu ayah, sehingga berlevel sama.
Dikenal juga istilah sibling yang tepat di kanan dan
sibling yang tepat di kiri

Subtree
Bagian dari tree berupa suatu node beserta descendantnya

Size
Banyaknya node dalam suatu tree

Level (Depth)
Hirarki suatu node. Root berhirarki 0, node dibawahnya
berhirarki 1 dan seterusnya.

Height
Selisih hirarki dari level terendah ke level tertinggi/nomor level
leaf terbawah.


Terminologi Tree
A
D
B
C
E F G
Depth/Kedalaman
Jumlah edge dari root sampai dengan node tersebut


Degree
Banyaknya child dari suatu node


Forest
Himpunan dari sejumlah tree

A
D
B
C
E F G
Terminologi Tree
Tree dengan cabang tidak lebih dari dua (hanya 0, 1, atau
2).
Tree dengan seluruh innernya paling banyak berderajat 2.
Cabang-cabang binary tree dibedakan menjadi cabang kiri
dan cabang kanan.
Jika hanya dijumpai satu cabang, harus ditentukan, cabang
kiri atau kanan.
Complete binary tree, full binary tree, perfect binary tree,
skewed binary tree
Binary Tree
Full Binary Tree
Binary tree yang :
Setiap node memiliki tepat 0 atau 2 child
Complete Binary Tree
Binary tree yang :
1. Setiap leaf memiliki depth n or n-1
2. Setiap leaf pada depth n / pada level terendah merapat ke kiri


X
Perfect Binary Tree
Binary tree yang :
1. Setiap inner memiliki tepat dua child
2. Setiap leaf terletak pada depth yang sama
Skewed Binary Tree
Binary tree yang semua nodenya kecuali leaf hanya
memiliki satu child
Menggunakan pointer
Representasi Binary Tree
Bentuk paling sederhana (one-
way)
Data
Bentuk 2-way
Data
Bentuk yang lebih lengkap
Data
CBT dan PBT dapat diimplementasikan dalam array
Penomoran pada node-nodenya bersifat terurut dan tidak ada yang
kosong (melompat).

Representasi dengan Array
A
B
I
J K
C
D E
F
G H
0
5 4 3
2
1
6
7
8
9 10
Dalam Array
A B I C F G J K D E H
0 1 2 3 4 5 6 7 8 9 10
Representasi dengan Array
Contoh beberapa hubungan struktural representasi array :
1. Mendapatkan anak dari suatu node :
1. Anak kiri dari node I : I 2I + 1
2. Anak kanan dari node I : I 2I + 2
2. Mendapatkan ayah dari suatu node :
1. Ayah dari node I : I [(I-1)/2]
3. Sibling dari node ke I :
1. I node genap : I-1
2. I node ganjil : I+1
Traversal / Kunjungan
Traversal : Mengunjungi setiap node pada tree
Ada tiga cara mengunjungi node-node pada suatu tree :
Preorder : root, kiri, kanan
Inorder : kiri, root, kanan
Postorder : kiri, kanan, root
Note : You may ``pass through'' a node as many times as you
like but
you must only process the node once.
A
B
D
C
E F G
A
B
D
C
E F
G
H
Preorder : root, kiri, kanan
F G B D E C A
A B D G H C E F
A
B
D
C
E F
G
H
Inorder : kiri, root, kanan
B G D H A E C F
Postorder : kiri, kanan, root
A
B
D
C
E F
G
H
G H D B E F C A
Try This One !
A
B
C
D E F
Pre-Order: A-B-D-C-E-F
In-Order: B-D-A-E-C-F
Post-Order: D-B-E-F-C-A

HEAPTREE
Suatu node dikatakan heapordered jika (fokus max):
Nilai pada node tersebut lebih besar dibanding nilai child dibawahnya.

Lebih kecil sama dengan dan lebih besar sama dengan tergantung dari
definisi prioritas. (yang kecil atau yang besar yang diprioritaskan).

Suatu tree dikatakan Heaptree
Jika tree tersebut binary, complete dan seluruh nodenya heapordered.

Binary: Setiap node paling banyak memiliki dua child.

Complete: Setiap leaf memiliki depth n or n-1, dan setiap leaf pada
depth n / pada level terendah merapat ke kiri. Tidak ada
penomoran yang melompat.

Heapordered: Setiap node terorganisasi berdasarkan suatu ketentuan
prioritas

10
9
8
5 2
7
1 4
6
3
0
5 4 3
2
1
6
7
8 9
OPERASI HEAPTREE
a. Operasi Penghapusan
1. Penghapusan dilakukan pada root.
2. Move node dengan indeks terbesar ke root.
3. Reheapify dari atas.
b. Operasi Penyisipan
1. Penyisipan dilakukan pada indeks terbesar.
2. Reheapify dari bawah.
9
8
5 2
7
1 4
6
3
0
5 4 3
2
1
6
7
8 9
Penghapusan pada Heaptree
I
3
9
8
5 2
7
1 4
6
0
5 4 3
2
1
6
7
8
II
Penghapusan pada Heaptree
9
3
8
5 2
7
1 4
6
0
5 4 3
2
1
6
7
8
III
9
7
8
5 2
3
1 4
6
0
5 4 3
2
1
6
7
8
IV
9
7
8
5 2
4
1 3
6
0
5 4 3
2
1
6
7
8
Penghapusan pada Heaptree
V
Bentuklah sebuah heap tree dari masukan
berikut :
2, 4, 5, 7, 3, 10, 8, 1, 9, 6 dengan prioritas
pada
nilai yang lebih besar !
Binary Search Tree
Binary Search Tree adalah binary tree dimana node-node dari tree
berisi nilai yang sudah terurut sebagai berikut :

Key node subtree kiri < key dari root < key node subtree kanan
18
10
5
23
14 21 33
Binary Search Tree Insertion
Key node subtree kiri < key dari root < key node subtree kanan
Insert ke dalam BST yang masih kosong masukan berikut :
12, 15, 13, 9, 5, 11, 20 !
12
9
15
13 20
5
11
1
6 5 4
3
2
7
Binary Search Tree Deletion
10
6
13
2 8 12 19
1 7
14
15
16
Langkah penghapusan node :
1. Tentukan lokasi node yang
mengandung nilai yang akan dihapus.
2. Lihat jumlah child : 0, 1 atau 2
10
6
13
2 8 12 19
1 7
14
15
16
Binary Search Tree Deletion
Child=0 leaf
Hapus : 16
X
Jika node yang dihapus adalah leaf,
maka
langsung hapus
X X
X
Binary Search Tree Deletion
10
6
13
2 8 12 19
1 7
14
15
16
Child=1, kiri atau
kanan
Hapus 14
X
Jika node yang dihapus mempunyai satu
child kiri atau kanan, maka anak itu
akan menempati posisi parentnya
X
10
6
13
2 7 12 19
1
15
16
Binary Search Tree Deletion
Binary Search Tree Deletion
Child=2, kiri dan kanan
Hapus 10
10
6
13
2 8 12 19
1 7
14
15
16
X
Jika node yang dihapus punya dua child, gantikan posisinya
dengan node terbesar yang ada pada subtree kiri.
How to find the biggest element in left subtree?
Go to the root of the left sub-tree and keep following right
pointers until there are no more right pointers to be followed
Atau gantikan posisi node yang dihapus itu dengan predecessor
inordernya.
Binary Search Tree Deletion
8
6
13
2 7 12 19
1
14
15
16
Binary Search Tree Deletion
Kekurangan Binary Search Tree
Input : 10, 15, 25, 17, 9, 7, 8
10
9
15
7
8
25
17
10
7
15
8
9
25
17
Bentuk binary tree yang paling ideal adalah perfect binary tree
minimal complete binary tree
Pada BST terdapat kemungkinan ada node yang terletak jauh dari root
Waktu yang dibutuhkan untuk searching menjadi lebih banyak
LATIHAN:
Input : ORY, JFK, BRU, DUS, ZRH, MEX,
ORD, NRT, ARN, GLA dan GCM
Wassalamualaikum
Terima Kasih
Departemen Ilmu Komputer
FMIPA-IPB
2012

Das könnte Ihnen auch gefallen