Anda di halaman 1dari 36

Algoritma dan Struktur Data

Tree
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-
node 1 root
child, father-son, mother-
daughter
node 2 3
Nama node: nama(angka) yang
dipakai untuk membedakan
sebuah node dengan node yang leaf
4 5 6
leaf
7 node
lain. Dalam kuliah ini adalah
angka yang tertulis dalam 8 9 10
lingkaran. 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

siblingnode-node yang root


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

Descendant dari node


x node yang 8 9
leaf
10

ditemukan ketika leaf leaf

menyusuri tree ke
bawah dari node x
Hubungan antar komponen

siblingnode-node yang
memiliki parent yang node 1 root

sama
node 2
Ancestor dari node x 3

node yang ditemukan,


ketika menyusuri tree leaf
4 5 6
leaf
7 node

ke 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
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 T1Tk , dan masing-masing memiliki
root n1nk.Jika node n adalah parent dari noden1nk,
akan diperoleh sebuah tree baru T yang memiliki root n.
Dalam kondisi ini, tree T1Tkmenjadi sub-tree dari tree
T. Root dari sub-tree n1nkadalah 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 T1Tk , dan masing-masing memiliki
root n1nk.Jika node n adalah parent dari noden1nk,
akan diperoleh sebuah tree baru T yang memiliki root n.
Dalam kondisi ini, tree T1Tkmenjadi sub-tree dari tree
T. Root dari sub-tree n1nkadalah child dari node n .

T1 n1 T2 T3 T4
1 n2 1 n3 1 n4

2 3 2

3
Definisi TREE
2. Dari k buah tree T1Tk , dan masing-masing memiliki
root n1nk.Jika node n adalah parent dari noden1nk,
akan diperoleh sebuah tree baru T yang memiliki root n.
Dalam kondisi ini, tree T1Tkmenjadi sub-tree dari tree
T. Root dari sub-tree n1nkadalah 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
D 38 C 56 78 D
C 26
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
1. Visit the root A

2. Traverse the left subtree


3. Traverse the right subtree B H

C D

E F

ABCDEGFH
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


3. Traverse the right subtree B H

C D

E F

CBGEDFAH
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
D
3. Visit the root C

E F

CGEFDBHA
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

D J
C 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

1001 1002
2 1003 1002 6

1003 1004 1005


3 1004 4 1005 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