Algoritma dan Struktur Data
Outline
1.
Apakah Tree Structure itu ?
2.
Binary Tree & implementasinya
3.Tree Traversal
Apakah Tree Structure itu ?
Struktur data yang menunjukkan hubungan
bertingkat (memiliki hierarkhi)
Contoh: direktori/folder pada windows atau
linux
My Pictures My Music Struktur data
Pointer & Structure Linked list My Document
Nama komponen pada Tree
1
3
7
10 2
4 5 6
8 9
node root
leaf
leaf leaf
leaf leaf
node
Hubungan antar komponen
Hubungan antar elemen: parent-child, father-son,
mother-daughter
Nama node: nama(angka) yang dipakai untuk membedakan
sebuah node dengan node yang lain. Dalam kuliah ini adalah
angka yang tertulis dalam lingkaran.
Label: nilai yang diingat oleh sebuah node
Tree vs Graph
– Tree: setiap node kecuali root hanya memiliki sebuah parent
– Graph: dapat memiliki lebih dari sebuah parent
Contoh graph
1
3
7
10
4 5 6
Hubungan antar komponen
sibling
:
node-node yang
memiliki parent yang
sama
Ancestor dari node x
:
node yang ditemukan,
ketika menyusuri tree ke
atas dari node x
Descendant dari node x
:
node yang ditemukan
ketika menyusuri tree ke
bawah dari node x
1
3
7
10 2
4 5 6
Hubungan antar komponen
sibling
:
node-node
yang memiliki parent
yang sama
Ancestor dari node x
:
node yang ditemukan,
ketika menyusuri tree
ke atas dari node x
Descendant dari node
x
:
node yang
ditemukan ketika
menyusuri tree ke
bawah dari node x
1
3
7
10 2
4 5 6
Hubungan antar komponen
sibling
:
node-node yang
memiliki parent yang
sama
Ancestor dari node x
:
node yang ditemukan,
ketika menyusuri tree
ke atas dari node x
Descendant dari node x
:
node yang ditemukan
ketika menyusuri tree
ke bawah dari node x
1
3
7
10 2
4 5 6
Level
1
3
7
10 2
4 5 6
8 9
0
1
2
Sebuah tree didefinisikan sebagai struktur y ang dibentuk
secara recursive oleh kedua rule berikut:
1. Sebuah node adalah sebuah tree. Node satu-satunya
pada tree ini berfungsi sebagai root maupun leaf.
2. Dari k buah tree T
1~
T
k
, dan masing-masing memiliki
root n
1~
n
k
.Jika node n adalah parent dari noden
1~
n
k,
akan diperoleh sebuah tree baru T yang memiliki root n.
Dalam kondisi ini, tree T
1~
T
k
menjadi sub-tree dari tree
T. Root dari sub-tree n
1~
n
k
adalah child dari node n .
1
Tree
leaf
root
node
Sebuah tree didefinisikan sebagai struktur y ang dibentuk secara recursive oleh kedua rule berikut:
1. Sebuah node adalah sebuah tree. Node satu-satunya pada tree ini berfungsi sebagai root maupun leaf.
2. Dari k buah tree T1~Tk , dan masing-masing memiliki
root n1~nk.Jika node n adalah parent dari noden1~nk,
akan diperoleh sebuah tree baru T yang memiliki root n. Dalam kondisi ini, tree T1~Tkmenjadi sub-tree dari tree
T. Root dari sub-tree n1~nkadalah child dari node n .
Definisi TREE
T1 n1 T2 n
2 1
2
3
1
T3 n
3 T4 n4
2
1
2. Dari k buah tree T1~Tk , dan masing-masing memiliki
root n1~nk.Jika node n adalah parent dari noden1~nk,
akan diperoleh sebuah tree baru T yang memiliki root n. Dalam kondisi ini, tree T1~Tkmenjadi sub-tree dari tree
T. Root dari sub-tree n1~nkadalah child dari node n .
Definisi TREE
2
6 7 8
12 13
T1 n1 T2 n2 T3 n 5
3 T n4
4
n
T
4
11
14
9 10
3
Ordered vs Unordered tree
Ordered tree
– Antar sibling terdapat urutan “usia”
–
Node yang paling kiri berusia paling tua
(sulung), sedangkan node yang paling kanan
berusia paling muda (bungsu)
–
Posisi node diatur atas urutan tertentu
Unordered tree
Outline
1.
Apakah Tree Structure itu ?
2.
Binary Tree & implementasinya
3.Tree Traversal
Definisi Binary Tree
1. Sebuah tree yang kosong juga merupakan sebuah binary tree 2. Binary tree harus memenuhi salah satu syarat berikut
Tidak memiliki anak
Memiliki subtree di sebelah kiri (left subtree)
Memiliki subtree di sebelah kanan (right subtree)
Memiliki baik left subtree maupun right subtree
a a
b
a
b
a
c b
a
b
Subtree (child) yang dimiliki bukan kiri maupun kanan
Definisi
left right label
struct node {
struct node *left; struct node *right; mydata label; }
a
c b
a
b c
Contoh
A H B C F D E G A H B C F D E G14 18 A
26 38 B H
C 56 78 D
100 E F
G
10
14 18
26 38
56 78
Latihan 1
Gambarkan implementasi dari binary
tree berikut
D C
G A
F
E
J I
H B
10
20 30
40 50 60 70
Outline
1.
Apakah Tree Structure itu ?
2.
Binary Tree & implementasinya
3.Tree Traversal
Definisi Tree Traversal
Teknik menyusuri tiap node dalam sebuah tree
secara sistematis, sehingga semua node dapat
dan hanya satu kali saja dikunjungi
Ada tiga cara traversal
preorder
inorder
postorder
Preorder
1.
Parent
2.
Traverse the left subtree
3.Traverse the right subtree
A
H B
C
F D
E
G
A
H B
C
F D
E
G
Implementasi dalam bahasa C
struct node {
struct node *left; struct node *right; char label; }
void preorder(struct node *p) {
if (p==NULL) return; jika empty-tree, tidak perlu lakukan apa-apa
printf(“visit %c ”, p->label); tampilkan label node yang dikunjungi
preorder(p->left); traverse the left subtree
preorder(p->right); traverse the right subtree
Inorder
1.
Traverse the left subtree
2.
Parent
3.
Traverse the right subtree
A
H B
C
F D
E
G
A
H B
C
F D
E
G
Implementasi dalam bahasa C
struct node {
struct node *left; struct node *right; char label; }
void inorder(struct node *p) {
if (p==NULL) return; jika empty-tree, tidak perlu lakukan apa-apa
inorder(p->left); traverse the left subtree
printf(“visit %c ”, p->label); tampilkan label node yang dikunjungi
inorder(p->right); traverse the right subtree
Postorder
1.
Traverse the left
subtree
2.
Traverse the right
subtree
3.
Parent
A
H B
C
F D
E
G
A
H B
C
F D
E
G
Implementasi dalam bahasa C
struct node {
struct node *left; struct node *right; char label; }
void postorder(struct node *p) {
if (p==NULL) return; jika empty-tree, tidak perlu lakukan apa-apa
postorder(p->left); traverse the left subtree
postorder(p->right); traverse the right subtree
printf(“visit %c ”, p->label); tampilkan label node yang dikunjungi
1. Parent
2. Traverse the left
subtree
3. Traverse the right
subtree
1. Traverse the left
subtree
2. Parent
3. Traverse the
right subtree
1. Traverse the left
subtree
2. Traverse the right
subtree
Latihan-2
A B C G D E F H L K I JTuliskan hasil preorder, inorder dan postorder traversal
untuk binary tree berikut.
1. Print2. Traverse the left
subtree
3. Traverse the right
subtree
1. Traverse the left
subtree
2. Print
3. Traverse the
right subtree
1. Traverse the left
subtree
2. Traverse the right
subtree
Outline
1.
Apakah Tree Structure itu ?
2.
Binary Tree & implementasinya
3.Tree Traversal
Teknik implementasi tree
Binary tree hanya memiliki dua anak: kiri dan kanan.
Karena itu implementasinya hanya memerlukan dua
buah pointer untuk masing-masing subtree.
Untuk implementasi tree yang memiliki sebarang
anak, dapat dilakukan dengan dua cara
1
2
6
3
4
5
1 23
1
2 6
3 4 5
2 77
3
4
5
6
5 37 35
10 87 15 95 25
3 5 10 15 25 35 23 37
77 87 95
label child
struktur yang
Merepresentasikan node
Implementasi memakai linked-list
1
2 6
3 4 5
label child sibling
1 1001
2 1003 1002 6
1000
1001 1002
3 1004
1003
4 1005
1004
1
2 6
3 4 5
1 1001
2 1003 1002 6
1000
1001 1002
3 1004
1003
4 1005
1004
5
Rotasi ke kanan 45°
1 1001
2 1003 1002 6
1000
1001 1002
3 1004
1003
4 1005
1004
5
Latihan-3
E
C H
G
K J
I
10
50 300
100 200 350 400
450 500
D 150
F
250
A
B
Jelaskan implementasi tree berikut a) memakai linked-list