T13 14-Binary Tree

Download Report

Transcript T13 14-Binary Tree

Algoritma dan Struktur Data
Binary Tree
Teknik Informatika
Universitas Muhammadiyah Malang
2011
Tujuan Instruksional
• Mahasiswa mampu menjelaskan mengenai
konsep Tree
• Mahasiswa mampu membuat dan
mendeklarasikan struktur data Tree
• Mahasiswa mampu menerapkan dan
mengimplementasikan Tree
Sub Topik
•
•
•
•
•
Penjelasan Tree
Istilah pada tree
Binary Tree
Jenis Binary Tree
ADT Binary tree
Kenapa menggunakan tree?
• Contoh permasalahan :
Jalur angkutan umum dari arjosari ke tempat wisata di
malang.
Pemandian tlogomas : Arjosariblimbingtlogomas
Pemandian sengkaling : Arjosariblimbingtlogomasjetis
• Bagaimana jika menggunakan linear list?
Bisa, tapi rumit.
• Lebih tepat menggunakan tree karena data tersebut
bersifat hirarki (one to many).
Penyelesaian Tree
• Jalur wisata dari arjosari ke tlogomas dan sengkaling :
Arjosari
Blimbing
tlogomas
Pemandian
tlogomas
jetis
Pemandian
sengkaling
Tree (Pohon)
• Dalam dunia nyata, sebuah pohon memiliki :
akar, cabang, daun.
• Dalam dunia komputer, pohon (tree) memiliki
3 (tiga) bagian tersebut namun dalam definisi
yang lain.
Struktur Tree
Arjosari
ROOT/AKAR
Blimbing
tlogomas
Pemandian
tlogomas
LEAF/DAUN
jetis
Pemandian
sengkaling
PATH/CABANG
Path 1 : arjosari  blimbing  tlogomas pemandian tlogomas
Path 2 : arjosari  blimbing  tlogomas jetis  pemandian sengkaling
Linear List dan Tree
• Linear list  digunakan untuk data yang
terurut secara serial.
– Contoh : nama mahasiswa satu kelas, nama hari
dalam minggu, nama bulan dalam tahun, dll.
• Tree  digunakan untuk data yang terurut
secara hirarki (one to many).
– Contoh : tingkatan pegawai dalam perusahaan
(direktor, manager, kepala divisi, dst), tingkatan
class di Java, dll.
Contoh Tree
Struktur organisasi sebuah perusahaan
Contoh Tree
isi sebuah buku
Contoh Tree
File system
Definisi
• Tree adalah Kumpulan element yang saling
terhubung secara hirarki (one to many).
• Element pada tree disebut node.
Aturan :
• Sebuah node hanya boleh memiliki satu
induk/parent. Kecuali root, tidak memiliki
induk/parent.
• Setiap node dapat memiliki nol atau banyak cabang
anak (one to many).
• Node yang tidak memiliki cabang anak disebut daun.
Contoh Tree
A
C
B
D
E
G
H
F
• Terdiri dari 8 node/element.
• Root?
Root : Node A
• Daun?
Daun : Node G, Node H, Node F
Example : Java’s Classes
Object
root
children of root
Number
Integer
Double
Throwable
Exception
OutputStream
FileOutputStream
grand children of root
RuntimeException
great grand child of root
Root
• Root (Node Root) adalah node yang memiliki
hirarki tertinggi.
• Node yang pertama kali dibentuk. Sehingga
tidak memiliki parent (node induk).
• Penelusuran path tiap node dimulai dari root.
• Subtree adalah node-node lain dibawah root
yang saling terhubung satu sama lain secara
hirarki.
Root and Subtrees
Object
Number
Integer
Double
root
Throwable
OutputStream
Exception
FileOutputStream
Subtree 1
RuntimeException
Subtree 2
Subtree 3
Levels
• Level adalah posisi hirarki dari sebuah node.
Object
Level 1
Level 2
Number
Integer
Double
Throwable
OutputStream
Exception
FileOutputStream
Level 3
RuntimeException
Level 4
Istilah pada Tree
Contoh Tree
A
B
C
F
D
E
J
H
I
G
Latihan
Ancestor (F)?
Descendant (B)?
Parent (I)?
Child (C)?
Sibling (G)?
Size?
Height?
Root?
Leaf?
Degree (C)?
Latihan
• Jawaban :
Ancestor (F) = C,A
Descendant (B) = D atau E
Parent (I) = H
Child (C) = F,G,H
Sibling (G) = F,H
Size = 9
Height = 4
Root = A
Leaf = D,E,F,G,I
Degree (C) = 3
Latihan
Gambarkan tree dari representasi berikut :
DF
DB
KJ
KL
BA
BC
H D
HK
FE
FG
JI
Tentukan :
1. Root
2. Leaf
3. Heigth
4. Child H
5. Parent A
Representasi Tree?
• Database, file xml.
• Paling mudah menggunakan database.
Binary Tree
Binary Tree (Pohon Biner)
• Pada sebuah pohon biner, tiap node memiliki
tepat 2 sub-tree (memiliki maksimal 2
cabang/degree).
Contoh binary tree
R
S
X
T
U
Y
Z
V
W
Contoh Binary Tree
• Representasi ekspresi arithmatik
Latihan
• Buatlah Binary tree dari ekspresi
aritmatik berikut :
(a + b) * (c – d) / (e + f)
Binary Tree
• (a + b) * (c – d) / (e + f)
//
*
+
e
+
a
b
c
d
f
Akses Elemen
• Posisi node dapat ditentukan berdasarkan
rumus berikut :
• Asumsi root dimulai dari index 0 :
– Anak kiri dari node i berada pada indeks : 2*i+1
– Anak kanan dari node i berada pada indeks : 2*i+2
• Asumsi root dimulai dari index 1 :
– Anak kiri dari node i berada pada indeks : 2*i
– Anak kanan dari node i berada pada indeks : 2*i+1
Struktur Data - Tree
30
Contoh
H
D
K
B
A
F
C
E
J
G
I
L
Representasi Binary Tree
• Binary tree dapat direpresentasikan dengan
menggunakan array maupun linked list.
Representasi Tree
Representasi tree menggunakan array (asumsi root pada index 0) :
H
D
K
B
F
J
L
A
C
E
G
I
0
1
2
3
4
5
6
7
8
9
10
11
Representasi tree menggunakan array (asumsi root pada index 1):
H
0
1
D
2
K
B
F
J
L
A
C
E
G
I
3
4
5
6
7
8
9
10
11
12
Linked Representation
root
H
D
K
J
B
L
F
I
A
C
E
leftChild
element
G
rightChild
Latihan
• Representasikan dengan ilustrasi array dan
linked list.
a1
2
b
4
c
5
e
d
8
h
3
i
9
10
j
6
f
7
g
Array Representation
a
1
2
b
4
3
c
5
e
d
8
h
tree[]
i
9
6
f
7
g
10
j
a b c d e f g h i j
0
0
5 5
10 10
Latihan
a1
b 3
7
c
d
15
Right-Skewed Binary Tree
a1
b 3
7
c
d
a -
tree[]
0
15
b - - - c - - - - - - - d
5
10
15
Jenis Binary Tree
• Berdasarkan subtree binary tree dibedakan
menjadi 4 jenis:
– Full Binary Tree
– Complete Binary Tree
– Incomplete Binary Tree (Unbalanced Tree)
– Skewed Binary Tree
Full Binary Tree
• Tiap subtree memiliki panjang path yang sama.
• Disebut juga maximum binary tree.
Complete Binary Tree
• Seluruh node sebelah kiri terisi seluruhnya.
Node sebelah kanan pada level n-1 ada yang
kosong.
H
D
K
B
A
F
C
E
J
G
I
L
Incomplete Binary Tree
Gambar a
Gambar b
Skewed Binary Tree
• Binary tree yang semua nodenya (kecuali leaf)
hanya memiliki satu anak.
• Disebut juga minimum binary tree.
Right Skewed
Left Skewed
Binary Search Tree (BST)
• Binary Search Tree (pohon telusur biner)
• Disebut juga Ordered Binary tree yaitu binary
tree yang seluruh children dari tiap node
terurut.
• Data pada subtree kiri lebih kecil dari data
pada subtree kanan.
Contoh Binary Search Tree
• Root = 20
20
10
6
2
40
15
8
30
25
• Bagaimana jika ada penambahan node 13?
• Bagaimana jika ada penambahan node 50?
• Bagaimana jika ada penambahan node 26?
Latihan
• Buatlah sebuah Binary Search Tree
berdasarkan proses-proses berikut :
insert 17, insert 8, insert 32, insert 6, insert
10, insert 21, insert 45, insert 1, insert 7,
insert 9, insert 26, insert 37, insert 50.
Pustaka
• Sartaj Sahni , “Data Structures & Algorithms”,
Presentation L20-24.
• Mitchell Waite, “Data Structures & Algorithms in
Java”, SAMS, 2001