Anda di halaman 1dari 36

Algoritma dan Struktur Data

Tree
Pertemuan 14
Outline

1. Apakah Tree Structure itu ?


2. Binary Tree & implementasinya
3. Tree Traversal
4. Implementasi tree (selain binary tree)
Apakah Tree Structure itu ?

 Struktur data yang menunjukkan hubungan bertingkat (memiliki hierarkhi)

 Contoh: direktori/folder pada windows atau linux

My Document

My Pictures My Music Struktur data

Pointer & Structure Linked list Tree


Nama komponen pada Tree

node 1 root

node 2 3

4 5 6 7 node
leaf leaf

8 9 10
leaf
leaf leaf
Hubungan antar komponen
 Hubungan antar elemen:
parent-child, father-son, node 1 root

mother-daughter
node 2
 Nama node: nama(angka) yang 3
dipakai untuk membedakan
sebuah node dengan node yang 4 5 6 7 node
leaf
lain. Dalam kuliah ini adalah leaf

angka yang tertulis dalam


lingkaran. 8 9 10
leaf
leaf leaf
 Label: nilai yang diingat oleh
sebuah node      
Contoh graph
 Tree vs Graph
 Tree: setiap node kecuali
root hanya memiliki sebuah
parent
 Graph: dapat memiliki lebih
dari sebuah parent
Hubungan antar komponen

 sibling : node-node yang node 1 root


memiliki parent yang
sama
node 2 3
 Ancestor dari node x :
node yang ditemukan,
4 5 6 7 node
ketika menyusuri tree ke leaf leaf
atas dari node x
 Descendant dari node x : 8 9
leaf
10
leaf leaf
node yang ditemukan
ketika menyusuri tree ke
bawah dari node x
Hubungan antar komponen
 sibling : node-node
yang memiliki parent node 1 root
yang sama
 Ancestor dari node node 2 3
x : node yang
ditemukan, ketika 4 5 6 7
leaf node
leaf
menyusuri tree ke
atas dari node x
8 9 10
 Descendant dari node leaf leaf
leaf
x : node yang
ditemukan ketika
menyusuri tree ke
bawah dari node x
Hubungan antar komponen
 sibling : node-node
yang memiliki parent node 1 root

yang sama
node 2 3
 Ancestor dari node x :
node yang ditemukan,
4 5 6
ketika menyusuri tree leaf leaf
7 node

ke atas dari node x


8 9 10
 Descendant dari node leaf leaf
leaf

x : node yang
ditemukan ketika
menyusuri tree ke
bawah dari node x
Level

1 0

2 3 1

4 5 6 7 2

8 9 10 3
Definisi TREE

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.

Tree
root
1
leaf node
Definisi TREE
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 .

T1 1 n1 T2 T3 T4
1 n2 1 n3 1 n4

2 3 4 2 3 2

5 6 3
Definisi TREE

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 . 1 n
T

T1 2 n1 T2 T3 T4
3 n2 4 n3 5 n4

6 7 8 9 10 11

12 13 14
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
 Antar sibling tidak terdapat urutan
tertentu
Outline

1. Apakah Tree Structure itu ?


2. Binary Tree & implementasinya
3. Tree Traversal
4. Implementasi tree (selain binary tree)
Definisi

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

HATI-HATI DALAM MENGGAMBAR BINARY TREE

a a a a a

b b b c b

Subtree (child) yang dimiliki


bukan kiri maupun kanan
Implementasi Binary Tree

struct node {
struct node *left;
struct node *right;
mydata label; left right label
}

a a

b c

b c
Contoh

A 10
10 14 18 A

14 18
B H
14 26 38 B H
18
26 38

C 26 D 38 C 56 78 D

56 78
56 78 F 100 E F
E
100
100 G
G
Latihan 1

 Gambarkan implementasi dari binary tree berikut

10 A

20 B 30 E

C 40 D 50 F 60 70 H

80 G 90 I 100 J
Outline

1. Apakah Tree Structure itu ?


2. Binary Tree & implementasinya
3. Tree Traversal
4. Implementasi tree (selain binary tree)
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
 Untuk tree yang kosong, traversal tidak perlu
dilakukan
Preorder
A
1. Visit the root
2. Traverse the left subtree
B H
3. Traverse the right subtree

C D

E F

A→B→C→D→E→G→F→H
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 A

2. Visit the root


B
3. Traverse the right subtree H

C D

E F

C→B→G→E→D→F→A→H
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 A

subtree
B
2. Traverse the right H

subtree
C D
3. Visit the root
E F

C→G→E→F→D→B→H→A
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. Print
2. 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
3. Print
Latihan-2

Tuliskan hasil preorder, inorder dan postorder traversal


untuk binary tree berikut. 1. Print
2. Traverse the left
A
subtree
3. Traverse the right
B I subtree

C D J
1. Traverse the left
subtree
E G K L 2. Print
3. Traverse the
F H right subtree

1. Traverse the left


subtree
2. Traverse the
right subtree
3. Print
Outline

1. Apakah Tree Structure itu ?


2. Binary Tree & implementasinya
3. Tree Traversal
4. Implementasi tree (selain binary tree)
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
 memakai linked-list
 memakai binary tree
Contoh

2 6

3 4 5
Implementasi memakai linked-list

3 23 37
1
1 23 5 37 35
5 77 87 95
2 6
2 77 10 87 15 95 25
10
3 4 5 3
15
4

25
label child 5

35
6

struktur yang struktur yang merepresentasikan


Merepresentasikan node   koneksi antar node           
Implementasi memakai binary-tree

1 1000
1 1001
2 6

1001 1002
3 4 5 2 1003 1002 6

1003 1004 1005


3 1004 4 1005 5
label child sibling
Implementasi memakai binary-tree

1000
1 1 1001

2 6 1001 1002
2 1003 1002 6

3 4 5
1003 1004 1005
3 1004 4 1005 5
Implementasi memakai binary-tree

Rotasi ke kanan 45°


1000
1 1001
1
2

1001 1002
2 1003 1002 6
6
3

1003 1004 1005


3 1004 4 1005 5
5
Latihan-3

Jelaskan implementasi tree berikut


a) memakai linked-list
b) memakai binary tree

10 A

50 B 250 F 300 G

C 100 D 150 E 200 H 350 400 I

450 J 500 K

Anda mungkin juga menyukai