OUTLINE
1. Pengertian TreeStructure?
2. Binary Tree & implementasinya
3. Tree Traversal
4. Implementasi tree (selain binary tree)
3.
APAKAH TREE STRUCTUREITU ?
Konsep struktur data yang terdiri dari akar dan simpul-simpul yang berada di bawahnya
Struktur data yang menunjukkan hubungan bertingkat (memiliki hierarkhi)
Contoh: struktur organisasi, silsilah keluarga
Warek I Warek II Warek III
Rektor
4.
APAKAH TREE STRUCTUREITU ?
Contoh: direktori/folder pada windows
My Pictures My Music Struktur data
Pointer & Structure Linked list
My Document
Tree
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
1
3
7
10
4 5 6
8 9
node root
leaf
leaf
leaf
leaf
leaf
node
node
2
Contoh graph
7.
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
8 9
node root
leaf
leaf
leaf
leaf
leaf
node
node
8.
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
8 9
node root
leaf
leaf
leaf
leaf
leaf
node
node
9.
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
8 9
node root
leaf
leaf
leaf
leaf
leaf
node
node
DEFINISI TREE
Sebuah treedidefinisikan 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.
3. Jika node n adalah parent dari node n1 ~ 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
Tree
leaf
root
node
13.
DEFINISI TREE
Sebuah treedidefinisikan 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 .
1
2 3 4
5 6
T1 n1 T2
n2 1
2
3
1
T3
n3 n4
T4
2
1
3
14.
DEFINISI TREE
2. Darik 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 .
2
6 7 8
12 13
T1 n1 T2
n2
5
T3
n3 n4
T4
n
T
4
11
14
9 10
3
1
15.
ORDEREDVS UNORDEREDTREE
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
16.
OUTLINE
1. Pengertian TreeStructure?
2. Binary Tree & implementasinya
3. Tree Traversal
4. Implementasi tree (selain binary tree)
17.
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
HATI-HATI DALAM MENGGAMBAR BINARY TREE
LATIHAN 1
Gambarkanimplementasi dari binary tree berikut
D
C
G
A
F
E
J
I
H
B
10
20 30
40 50 60 70
80
90
100
22.
OUTLINE
1. Pengertian TreeStructure?
2. Binary Tree & implementasinya
3. Tree Traversal
4. Implementasi tree (selain binary tree)
23.
DEFINISITREE TRAVERSAL
Teknikmenyusuri 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
24.
PREORDER
1. Visit theroot
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
A→B→C→D→E→G→F→H
25.
struct node {
structnode *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
}
26.
INORDER
1. Traverse theleft subtree
2. Visit the root
3. Traverse the right subtree
A
H
B
C
F
D
E
G
A
H
B
C
F
D
E
G
27.
IMPLEMENTASI DALAM BAHASAC
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
}
28.
POSTORDER
1. Traverse theleft subtree
2. Traverse the right subtree
3. Visit the root
A
H
B
C
F
D
E
G
A
H
B
C
F
D
E
G
29.
IMPLEMENTASI DALAM BAHASAC
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
}
30.
1. Visit theroot
2. Traverse the left subtree
3. Traverse the right
subtree
1. Traverse the left
subtree
2. Visit the root
3. Traverse the right
subtree
1. Visit the root
2. Traverse the left subtree
3. Traverse the right
subtree
TEKNIK IMPLEMENTASITREE LAINNYA
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 berbagai cara
LATIHAN
E
C H
G
K
J
I
10
50 300
100200 350 400
450 500
D 150
F
250
A
B
Jelaskan bagaimana proses
implementasi tree berikut!
a.Implementasi 1
b.Implementasi 2
10/09/25
JENIS-JENIS KHUSUS BINARYTREE
Full Binary Tree : Binary tree yang setiap nodenya memiliki dua clid dan setiap
subtree memiliki panjang path yang sama
Complete Binary Tree : Setiap node memiliki dua clid namun setiap subtree
boleh memiliki Panjang yang berbeda
Skewed Binary Tree : Binary tree yang semua nodenya hanya memiliki 1 child,
kecuali leaf
44.
OPERASI TREE
Create: untuk membuat binary tree baru yang masih kosong
Insert ; memasukan node kedalam tree, bis sebagai root, left child atau right child,
jika sebagai root maka harus kosong
Clear : mengosongkan binary tree yang sudah ada
Empty : memeriksa apakah binary treenya kosong
Find ; mencari root, parent, left child atau right child
Update : mengubah isi dari node
Retrive : mengetahui isi node yang ditunjuk pointer current
deleteSub : menghapus subree (node beserta descendantnya)
Characteristic : mengetahui karakteristik dari tree (ukuran, height average length)
Transverse : mengunjungi node pada tree (pre orderm in order dan post order)
10/09/25
45.
10/09/25
CREATE BINARY TREE
typedefstruct {
struct node *left;
struct node *right;
int label;
}node;
void createTree ( node * T, int data) {
node *new;
new = (node *) malloc (sizeof (node));
new->label = data;
new->left = NULL;
new-> right = NULL;
T = new;
}
46.
10/09/25
INSERT KIRI
void tambahKiri(tree *T, int dataBaru){
node *baru;
baru = (node *) malloc (sizeof (node));
baru -> data = dataBaru
baru->left = NULL;
baru->right =NULL;
if (T->left == NULL){
T->left = baru;
}
else {
tree * subtree;
subtree = T->left;
while (subtree->left !=NULL)
subtree = subtree->left;
subtree->left = baru;
}
}
PENGERTIAN
Sama denganordered binary Tree
Untuk memudahkan proses pencarian, binary serach tree memiliki sifat bahwa
semua left child harus lebih kecil daripada right child dan parentnya. Juga semua
right child harus lebih besar dari left child serta parentnya.
10/09/25