Tujuan :
1. Mahasiswa mampu memahami tipe data tree
2. Mahasiswa mampu membuat program operasi pada queue
Peralatan Pendukung :
1. Modul Praktikum (Cetak)
2. Aplikasi Dev c++
1. Teori Dasar
Tree atau pohon merupakan struktur data yang tidak linear yang digunakan untuk mempresentasikan
data yang bersifat hirarki antara elemen-elemennya.
Definisi tree yaitu kumpulan elemen yang salah satu elemennya disebut root (akar) dan elemen yang lain
disebut simpul ( node) yang terpecah menjadi sejumlah kumpulan yang tidak saling berhubungan satu
sama lain yang disebut sub-tree atau cabang.
Tree adalah struktur data yang terdiri dari entitas yang disebut node yang terkait melaui sebuah edge.
Node paling atas disebut dengan root. Yang tergambar seperti pohon terbalik.
Hal | 181
Untuk lebih memahami istilah – istilah diatas, perhatikanlah gambar-gambar dibawah ini :
Gambar 1 (Root, Parent, Children, Sibling, Leaf)
n node
n-1 edge
BINARY TREE
Binary Tree adalah tree dimana setiap node mempunyai paling banyak 2 children. Children dari setiap
node disebut left-child dan right-child.
Hal | 182
Perfect Binary Tree
Semua level pada tree terisi lengkap
Binary tree dibentuk dengan node yang mempunyai Data dan dua buah pointer/link ( *Left dan
*Right )
Struktur Data Tree mirip dengan Double Linked List, hanya beda penamaan.
DATA : berisi informasi setiap 1 buah elemen tree, bisa berupa bilangan (int), string, maupun
address.
LEFT : merupakan bagian elemen yang bertipe dasar “Address”, yaitu berisi alamat untuk
menunjuk tree bagian kiri.
RIGHT : merupakan bagian elemen yang bertipe dasar “Address”, yaitu berisi alamat untuk
menunjuk tree bagian kanan.
2. Praktikum
Praktikum 1 : Membuat Tree
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
/*Program Utama*/
int main(){
struct Node* root = TambahNode(1); //Isi Root Node dengan data 1
root->left = TambahNode(2); //Tambah node di kiri Root, data 2
root->right = TambahNode(3); //Tambah node di Kanan Root, data 3
root->left->left = TambahNode(4); //Tambah node di kiri Children Root, data 4
root->left->right = TambahNode(5); //Tambah node di kanan Children Root, data 5
return 0;
}
2 3
4 5
Kemudian lakukan input data sehingga tree yang terbentuk seperti dibawah ini
Hal | 184
2. Depth First, meliputi :
a. Preorder
Mengunjungi node terbawah hingga mencapai setiap children node dengan urutan :
Right children Left children Parent
b. Inorder
Mengunjungi node terbawah hingga mencapai setiap children node dengan urutan:
Right children Parent Left children
c. Postorder
Mengunjungi node terbawah hingga mencapai setiap children node dengan urutan:
Parent Right children Left children
Hal | 185
Program Level Order Traversal
#include <bits/stdc++.h>
using namespace std;
class node {
public:
int data;
node *left, *right;
};
/* Tambah Node */
node* newNode(int data)
{
node* Node = new node();
Node->data = data;
Hal | 186
Node->left = NULL;
Node->right = NULL;
return (Node);
}
/* Driver code*/
int main()
{
node* root = newNode(1);
root->left = newNode(2);
root->right = newNode(3);
root->left->left = newNode(4);
root->left->right = newNode(5);
return 0;
}
printPostorder(node->left);
printPostorder(node->right);
cout << node->data << " ";
}
int main()
{
struct Node* root = TambahNode('H');
//Kiri
root->left = TambahNode('D');
root->left->left = TambahNode('B');
root->left->left->left = TambahNode('A');
root->left->left->right = TambahNode('C');
root->left->right = TambahNode('F');
root->left->right->left = TambahNode('E');
root->left->right->right = TambahNode('G');
//Kanan
root->right = TambahNode('K');
root->right->left = TambahNode('I');
root->right->left->right = TambahNode('J');
root->right->right = TambahNode('L');
return 0;
}
3. Latihan
-
4. Tugas
-
Hal | 188