SlideShare a Scribd company logo
Struktur Data
POHON (TREE)
Definisi
• Pohon (Tree) adalah graf tak-berarah terhubung yang
tidak mengandung sirkuit.
• Pohon termasuk struktur non linear yang didefinisikan
sebagai data yang terorganisir dari suatu item informasi
cabang yang saling terkait.
• Pohon yang dalam analisis pemecahan masalah
pengambilan keputusan :
 Pemetaan mengenai alternatif-alternatif pemecahan
masalah yang dapat diambil dari masalah tersebut.
 Pohon tersebut juga memperlihatkan faktor-faktor
kemungkinan/probabilitas yang akan mempengaruhi
alternatif-alternatif keputusan tersebut, disertai
dengan estimasi hasil akhir yang akan didapat bila
kita mengambil alternatif keputusan tersebut.
power point struktur data tree atau pohon
Istilah dalam Tree
Term Definition
Node
Parent
Child
Root
Sibling
Leaf
Level
Depth
Complete
Balanced
Sebuah elemen dalam sebuah tree; berisi sebuah informasi
Node yang berada di atas node lain secara langsung; Q adalah
parent dari R dan S
Cabang langsung dari sebuah node; D dan E merupakan children
dari B
Node teratas yang tidak punya parent (P)
Sebuah node lain yang memiliki parent yang sama; Sibling dari
Q adalah T karena memiliki parent yang sama yaitu P
Sebuah node yang tidak memiliki children. R, S, V, W adalah
leaf (daun). Leaf biasa disebut sebagai external node,
sedangkan node selainnya disebut sebagai internal node. Q, B,
T, U adalah internal node
Semua node yang memiliki jarak yang sama dari root.
Plevel 1; Q,Tlevel 2; R, S, Ulevel 3; V, W level 4
Jumlah level yang ada dalam tree
Semua parent memiliki children yang penuh
Semua subtree memiliki depth yang sama
Pengantar: Binary Tree
• Bentuk Pohon Berakar yang
lebih mudah dikelola dalam
komputer adalah Pohon Biner
(Binary Tree).
• Binary Tree lebih dikenal
sebagai Pohon Umum (General
Tree) yang dapat didefinisikan
sebagai kumpulan simpul yang
mungkin kosong atau
mempunyai akar dan dua
Subpohon yang saling terpisah
yang disebut dengan Subpohon
Kiri/cabang kiri (Left Subtree)
dan Subpohon Kanan/cabang
kanan (Right Subtree).
Struktur Binary Tree
• Karakteristik Pohon Biner (Binary Tree) :
1. Setiap Simpul paling banyak hanya memiliki dua
buah anak
2. Derajat Tertinggi dari setiap Simpul adalah dua.
3. Dibedakan antara Cabang Kiri dan Cabang Kanan.
4. Dimungkinkan tidak mempunyai Simpul.
• Masing-masing simpul dalam binary tree terdiri dari tiga
bagian yaitu sebuah data dan dua buah pointer yang
dinamakan pointer kiri dan kanan.
Pointer Data Pointer
Istilah pada Pohon Biner
• Pohon biner miring (skewed tree)
Pembentukan Tree
Pembentukan Tree
Langkah-langkah Pembentukan Binary Tree:
1. Siapkan node baru
- alokasikan memorinya
- masukkan infonya
- set pointer kiri & kanan = NULL
2. Sisipkan pada posisi yang tepat
- penelusuran  utk menentukan posisi yang tepat; info
yang nilainya lebih besar dari parent akan ditelusuri di
sebelah kanan, yang lebih kecil dari parent akan
ditelusuri di sebelah kiri
- penempatan  info yang nilainya lebih dari parent akan
ditempatkan di sebelah kanan, yang lebih kecil di sebelah
kiri
Metode Traversal
• Salah satu operasi yang paling umum dilakukan terhadap
sebuah tree adalah kunjungan (traversing)
• Sebuah kunjungan berawal dari root, mengunjungi setiap node
dalam tree tersebut tepat hanya sekali
– Mengunjungi artinya memproses data/info yang ada pada
node yang bersangkutan
• Kunjungan bisa dilakukan dengan 3 cara:
1. Preorder (Prefix)
2. Inorder (Infix)
3. Postorder (Postfix)
• Ketiga macam kunjungan tersebut bisa dilakukan secara
rekursif dan non rekursif.
Preorder (Prefix)
• Kunjungan preorder, juga disebut dengan depth first order,
menggunakan urutan:
 Cetak isi simpul yang dikunjungi
 Kunjungi cabang kiri
 Kunjungi cabang kanan
void preorder(pohon ph)
{
if (ph != NULL)
{
printf("%c ", ph->info);
preorder(ph->kiri);
preorder(ph->kanan);
}
}
P
A T
S I
U R
P AS U T R I
Inorder (Infix)
• Kunjungan secara inorder,
juga sering disebut dengan
symmetric order,
menggunakan urutan:
 Kunjungi cabang kiri
 Cetak isi simpul yang
dikunjungi
 Kunjungi cabang kanan
void inorder(pohon ph)
{
if (ph != NULL)
{
inorder(ph->kiri);
printf("%c", ph->info);
inorder(ph->kanan);
}
}
P
A T
S U R I S AU P R T I
Postorder (Postfix)
• Kunjungan secara postorder
menggunakan urutan:
 Kunjungi cabang kiri
 Kunjungi cabang kanan
 Cetak isi simpul yang
dikunjungi
void postorder(pohon ph)
{
if (ph != NULL)
{
postorder(ph->kiri);
postorder(ph->kanan);
printf("%c ", ph->info);
}
}
P
A T
S U R I S UA R I T P
Contoh: Pre, In, and Post Order
Contoh: Pre, In, and Post Order
Diketahui level:
54 40 66 20 50 59 75 57 62
Gambar pohon biner dan
telusuri Pre Order, In
Order dan Post Ordernya.
Kasus traversal
T
E R
I
L S A
Pre Order: T E L S R A I
In Order : L E S T A R I
Post Order: L S E A I RT
Jenis traversal tree ada 3
1. Pre Order
 Kunjungi simpul akar
 Sub kiri
 Sub kanan
Contoh: Tree = (C * D) + E, maka
Pre Order = +*CDE
2. In Order
 Sub kiri
 Kunjungi simpul akar
 Sub kanan
Contoh, Tree = (C * D) + E, maka
In Order = C*D+E
3. Post Order
 Sub kiri
Sub kanan
Kunjungi simpul akar
Contoh, Tree = (C * D) + E,
maka Post Order = CD*E+
C D
Contoh traversal
Tentukan traversal tree dari tree: [ A ^ (B - C) / (E * F) +G]
Maka:
Pre Order = /^-BCA+*EFG
In Order = B-C^A/E*F+G
Post Order = BC-A^EF*G+/
Perhatikan operator dengan
operasi terbanyak/terberat
akan sebagai ROOT.
Persamaan In Order adalah
mirip dengan traversal.
Deklarasi Tree
typedef char typeInfo;
typedef struct Node tree;
struct Node
{
typeInfo info; /*jenis data*/
tree *kiri; /* cabang kiri */
tree *kanan; /* cabang kanan */
}
Declarasi struct
typedef struct Node
//struct Node
{
int data; //char data;
Node *kiri;
Node *kanan;
Node *parent;
};
Node *pohon = NULL;
Contoh 1: Program Binary Tree
//Tree_Binary
//header file
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
//deklarasi AWAL struct sebuahtree
typedef struct Node
{
int data;
Node *kiri;
Node *kanan;
};
Node *pohon = NULL;
//fungsi untuk menambahkan node baru
void tambah (Node **root, int databaru)
{
//jika root masih kosong
if ((*root)==NULL) {
//pembuatan node baru
Node *baru;
//alokasi memori dari node yang dibuat
baru = new Node;
//inisialisasi awal node yang baru dibuat
baru->data=databaru;
baru->kiri=NULL;
baru->kanan=NULL;
(*root) = baru;
(*root) -> kiri = NULL;
(*root) -> kanan = NULL;
//jika menunjuk ke NULL artinya tidak
mempunyai child
printf("Data Bertambah!"); }
Sambungan …#1
//jika data yang akan dimasukkan
lebih kecil daripada elemen root,
maka akan diletakkan di node
sebelah kiri.
else if (databaru<(*root)->data)
tambah(&(*root)->kiri,
databaru);
//jika data yang akan dimasukkan
lebih besar daripada elemen root,
maka akan diletakkan di node
sebelah kanan
else if (databaru>(*root)->data)
tambah(&(*root)->kanan,
databaru);
//jika saat dicek data yang akan
dimasukkan memiliki nilai yang
sama dengan data pada root
else if (databaru==(*root)->data)
printf("Data Sudah ada!");
}
//fungsi yang digunakan untuk mencetak tree
secara preOrder
void preOrder(Node *root)
{
if(root!=NULL)
{
if(root->data!=NULL)
{
printf("%d ",root->data);
}
preOrder(root->kiri);
preOrder(root->kanan);
}
}
//fungsi yang digunakan untuk mencetak tree
secara inOrder
void inOrder(Node *root)
{
if(root!=NULL)
Sambungan …#2
if(root!=NULL)
{
inOrder(root->kiri);
if(root->data!=NULL)
{
printf("%d ",root->data);
}
inOrder(root->kanan);
}
}
//fungsi yang digunakan untuk mencetak tree
secara postOrder
void postOrder(Node *root)
{
if(root!=NULL) {
postOrder(root->kiri);
postOrder(root->kanan);
if(root->data!=NULL)
{
printf("%d ",root->data); }
}
}
//fungsi utama
int main()
{
//deklarasikan variabel
char pil;
while (true)
{
system("cls"); //bersihkan layar
char data;
printf("t#PROGRAM TREE Dev C++#");
printf("nt=================");
printf("nMENU");
printf("n----n");
printf("[1] Tambah Datan");
printf("[2] Lihat Pre-Ordern");
printf("[3] Lihat In-Ordern");
printf("[4] Lihat Post-Ordern");
printf("[X] Keluarn");
printf("Pilihan Anda : ");
scanf("%c",&pil);
fflush(stdin); //mengosongkan buffering
Sambungan …#3
switch(pil)
{
//jika pil bernilai '1'
case '1':
printf("nINPUT : ");
printf("n-------");
printf("nMasukkan data: ");
scanf("%d", &data);
//panggil fungsi untuk menambah node
yang berisi data pada tree
tambah(&pohon,data);
_getch(); break;
//jika pil bernilai '2'
case '2':
printf("nOUTPUT PRE ORDER : ");
printf("n------------------n");
if(pohon!=NULL)
//panggil fungsi untuk mencetak data
secara preOrder
preOrder(pohon);
else
printf("Masih Kosong!!!");
_getch();
break;
//jika pil bernilai '3'
case '3':
printf("nOUTPUT IN ORDER : ");
printf("n------------------n");
if(pohon!=NULL)
//panggil fungsi untuk mencetak
data secara inOrder
inOrder(pohon);
else
printf("Masih Kosong!!!");
_getch();
break;
//jika pil bernilai '4'
case '4':
printf("nOUTPUT POST ORDER: ");
printf("n------------------n");
if(pohon!=NULL)
//panggil fungsi untuk mencetak data
secara postOrder
postOrder(pohon);
else
printf("Masih Kosong!!!");
_getch();
break;
Sambungan …#4
//jika pil bernilai 'X' atau 'x'
case 'X'|'x':
exit(0);
break;
}
}
}
Catatan:
• Entri data satu per satu.
• Pre Order  sesuai
dengan data yang
dientri
• In Order  Diurutkan
dari kecil ke besar
• Post Order  susunan
output seperti distribusi
normal. Data pertama
terletak di akhir.
• Contoh data entry:
60 45 30 70 40 90 25 80
Pelajari contoh lain dalam link di bawah ini:
http://www.nblognlife.com/2014/12/binary
-search-tree-bst-tree-lanjutan.html
OUTPUT PROGRAM:
M
A R
S T
E
Contoh 2: Program Gambar Tree
//Diketahui Pre Order: MASTER
//header file
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
using namespacestd;
//Deklarasi Tree
typedef struct node
{
char s152;
node *kiri;
node *kanan;
};
node *root=NULL;
Sambungan …#1
//Tambah data
void Tambahdata(node **root,char
u152)
{
if((*root)==NULL){
node *baru;
baru= new node;
baru->s152 = u152;
baru->kiri = NULL;
baru->kanan = NULL;
(*root)=baru; }
}
//Pre Order
void preorder(node *root)
{
if(root !=NULL) {
printf("%c ", root->s152);
preorder(root->kiri);
preorder(root->kanan); }
}
//In Order
void inorder(node *root)
{
if(root !=NULL) {
inorder(root->kiri);
printf("%c ", root->s152);
inorder(root->kanan); }
}
//Post Order
void postorder(node *root)
{
if(root !=NULL) {
postorder(root->kiri);
postorder(root->kanan);
printf("%c ", root->s152); }
}
Sambungan …#2
//Program utama
main()
{
char g152;
Tambahdata(&root,g152='M');
Tambahdata(&root->kiri,g152='A');
Tambahdata(&root->kiri->kiri,g152='S');
Tambahpang(&root->kiri->kiri->kiri, g152='T');
Tambahdata(&root->kiri->kiri->kanan,g152='E');
Tambahdata(&root->kanan,g152='R');
printf("Tampilan secara PreOrder : "); preorder(root);
printf("nTampilan secara InOrder : "); inorder(root);
printf("nTampilan secara PostOrder : "); postorder(root);
getch();
return 0;
}
LATIHAN 19
A. Asumsikan anda mempunyai sejumlah dana untuk
diinvestasikan pada dua alternatif proyek, yaitu proyekAdan
B.Peluang proyek A akan memberikan keuntunganadalah
25% dengan nilai keuntungan 75 juta. Peluang proyek B
akan memberikan keuntungan adalah 45% dengan nilai
keuntungan 25 juta. Buatlah pohon keputusan untuk
membantu anda dalam mengambil keputusan.
B. Buatlah pohon biner dari barisan bilangan berikut:
1. 12, 22, 8, 19, 10, 9, 20, 4, 2, 6
2. B, C, D, E, Z, J, N, K, W, L, O, E, G
3. 7, 13, 4, 6, 5, 9, 15, 20, 60, 14, 40, 70
4. 50, 45, 55, 50, 40, 50, 60, 70, 40, 35, 30, 20, 80, 75, 85
5. P,N, L, Q, R, T, S, U, M, O, Y,Z, O
C. Tentukan traversal tree dari tree (A * B) + (C +D)
D. Tentukan traversal tree dari tree (C * F)^A + (B /D)+G
E. Dari contoh program biner di atas, buatlah program Pohon
Biner yang dapat melakukan tambah data secara serentak:
1. Memasukkan data
2. Melakukan Traverse
3. Menghitung jumlah node
F. Buatlah program untuk menampilkan node baru ke dalam
pohon dengan menggunakan prosedur preorder, inorder, dan
postorder sehingga akan didapatkan hasil :
Tampilan secara PreOrder : L A K C N I
Tampilan secara InOrder : K A N C I L
Tampilan secara PostOrder : K N I C A L

More Related Content

Similar to power point struktur data tree atau pohon

Algoritma dan Struktur Data - pohon biner
Algoritma dan Struktur Data - pohon binerAlgoritma dan Struktur Data - pohon biner
Algoritma dan Struktur Data - pohon biner
Georgius Rinaldo
 
Slide minggu 3 pertemuan 1 (struktur data1) [repariert]
Slide minggu 3 pertemuan 1 (struktur data1) [repariert]Slide minggu 3 pertemuan 1 (struktur data1) [repariert]
Slide minggu 3 pertemuan 1 (struktur data1) [repariert]
Setia Juli Irzal Ismail
 
Algoritma dan Struktur Data - Pohon Biner
Algoritma dan Struktur Data - Pohon BinerAlgoritma dan Struktur Data - Pohon Biner
Algoritma dan Struktur Data - Pohon Biner
KuliahKita
 
Bab 9 tree
Bab 9 treeBab 9 tree
Bab 9 tree
arii_manroe
 
Biner
BinerBiner
12 Tree.pptx pre-order Inorder post order
12 Tree.pptx pre-order Inorder post order12 Tree.pptx pre-order Inorder post order
12 Tree.pptx pre-order Inorder post order
PrihManiaRezaAprilli
 
Algorithms and Data Structures
 Algorithms and Data Structures Algorithms and Data Structures
Algorithms and Data Structures
Noval C. Kesuma
 
Queue dan tree
Queue dan treeQueue dan tree
Queue dan tree
radar radius
 
Laporan resmi bab 1 (tree bag.2)
Laporan resmi bab 1 (tree bag.2)Laporan resmi bab 1 (tree bag.2)
Laporan resmi bab 1 (tree bag.2)
Jacob Ronna
 
Pertemuan 9 ok
Pertemuan 9 okPertemuan 9 ok
Pertemuan 9 ok
eli priyatna laidan
 
Buku struktur data pages-111-122
Buku struktur data pages-111-122Buku struktur data pages-111-122
Buku struktur data pages-111-122
BintangWijaya5
 
Tugas kelompok mi d3_sore
Tugas kelompok mi d3_soreTugas kelompok mi d3_sore
Tugas kelompok mi d3_sore
tio_arkarna
 
Bab 10 tree_lanjutan
Bab 10 tree_lanjutanBab 10 tree_lanjutan
Bab 10 tree_lanjutan
arii_manroe
 
Tree
TreeTree
Linked list
Linked listLinked list
Linked list
Tenia Wahyuningrum
 
Pertemuan 9 Tree dan BinaryTree
Pertemuan 9 Tree dan BinaryTreePertemuan 9 Tree dan BinaryTree
Pertemuan 9 Tree dan BinaryTree
Endang Retnoningsih
 

Similar to power point struktur data tree atau pohon (17)

Bab x tree (pohon)
Bab x   tree (pohon)Bab x   tree (pohon)
Bab x tree (pohon)
 
Algoritma dan Struktur Data - pohon biner
Algoritma dan Struktur Data - pohon binerAlgoritma dan Struktur Data - pohon biner
Algoritma dan Struktur Data - pohon biner
 
Slide minggu 3 pertemuan 1 (struktur data1) [repariert]
Slide minggu 3 pertemuan 1 (struktur data1) [repariert]Slide minggu 3 pertemuan 1 (struktur data1) [repariert]
Slide minggu 3 pertemuan 1 (struktur data1) [repariert]
 
Algoritma dan Struktur Data - Pohon Biner
Algoritma dan Struktur Data - Pohon BinerAlgoritma dan Struktur Data - Pohon Biner
Algoritma dan Struktur Data - Pohon Biner
 
Bab 9 tree
Bab 9 treeBab 9 tree
Bab 9 tree
 
Biner
BinerBiner
Biner
 
12 Tree.pptx pre-order Inorder post order
12 Tree.pptx pre-order Inorder post order12 Tree.pptx pre-order Inorder post order
12 Tree.pptx pre-order Inorder post order
 
Algorithms and Data Structures
 Algorithms and Data Structures Algorithms and Data Structures
Algorithms and Data Structures
 
Queue dan tree
Queue dan treeQueue dan tree
Queue dan tree
 
Laporan resmi bab 1 (tree bag.2)
Laporan resmi bab 1 (tree bag.2)Laporan resmi bab 1 (tree bag.2)
Laporan resmi bab 1 (tree bag.2)
 
Pertemuan 9 ok
Pertemuan 9 okPertemuan 9 ok
Pertemuan 9 ok
 
Buku struktur data pages-111-122
Buku struktur data pages-111-122Buku struktur data pages-111-122
Buku struktur data pages-111-122
 
Tugas kelompok mi d3_sore
Tugas kelompok mi d3_soreTugas kelompok mi d3_sore
Tugas kelompok mi d3_sore
 
Bab 10 tree_lanjutan
Bab 10 tree_lanjutanBab 10 tree_lanjutan
Bab 10 tree_lanjutan
 
Tree
TreeTree
Tree
 
Linked list
Linked listLinked list
Linked list
 
Pertemuan 9 Tree dan BinaryTree
Pertemuan 9 Tree dan BinaryTreePertemuan 9 Tree dan BinaryTree
Pertemuan 9 Tree dan BinaryTree
 

Recently uploaded

MATERI BULLYING DAN NARKOBA UNTUK LINGKUNGAN SEKOLAH.pdf
MATERI BULLYING DAN NARKOBA UNTUK LINGKUNGAN SEKOLAH.pdfMATERI BULLYING DAN NARKOBA UNTUK LINGKUNGAN SEKOLAH.pdf
MATERI BULLYING DAN NARKOBA UNTUK LINGKUNGAN SEKOLAH.pdf
AgusRustiono
 
PPT CARA BELAJAR EFEKTIF.ppt. Belajar Efektif
PPT CARA BELAJAR EFEKTIF.ppt. Belajar EfektifPPT CARA BELAJAR EFEKTIF.ppt. Belajar Efektif
PPT CARA BELAJAR EFEKTIF.ppt. Belajar Efektif
Nurbani10
 
PPT IPS TEMA 1 KELAS 7 KURIKULUM MERDEKA
PPT IPS TEMA 1 KELAS 7 KURIKULUM MERDEKAPPT IPS TEMA 1 KELAS 7 KURIKULUM MERDEKA
PPT IPS TEMA 1 KELAS 7 KURIKULUM MERDEKA
theresia735260
 
Kelas IX - Bab 1 - Berpikir Komputasional.pptx
Kelas IX - Bab 1 - Berpikir Komputasional.pptxKelas IX - Bab 1 - Berpikir Komputasional.pptx
Kelas IX - Bab 1 - Berpikir Komputasional.pptx
SebastianAryadi
 
JURNAL REFLEKSI DWI MINGGUAN MODUL 1.2.pdf
JURNAL REFLEKSI DWI MINGGUAN MODUL 1.2.pdfJURNAL REFLEKSI DWI MINGGUAN MODUL 1.2.pdf
JURNAL REFLEKSI DWI MINGGUAN MODUL 1.2.pdf
masyithah15
 
1.3.f.7. Eksplorasi Konsep - Modul 1.3 (1).pdf
1.3.f.7. Eksplorasi Konsep - Modul 1.3 (1).pdf1.3.f.7. Eksplorasi Konsep - Modul 1.3 (1).pdf
1.3.f.7. Eksplorasi Konsep - Modul 1.3 (1).pdf
septyayuningtyas1
 
WAWASAN WIYATA MANDALA SMA NEGERI 1 KEDAMEAN 2024
WAWASAN WIYATA MANDALA SMA NEGERI 1 KEDAMEAN  2024WAWASAN WIYATA MANDALA SMA NEGERI 1 KEDAMEAN  2024
WAWASAN WIYATA MANDALA SMA NEGERI 1 KEDAMEAN 2024
gdrive16
 
Materi MPLS 2024_2025 Mengenal Kurikulum Merdeka
Materi MPLS 2024_2025 Mengenal Kurikulum MerdekaMateri MPLS 2024_2025 Mengenal Kurikulum Merdeka
Materi MPLS 2024_2025 Mengenal Kurikulum Merdeka
RizkiDwiKamalulJamal1
 
666928737-Materi-MPLS-Pengenalan-Kurikulum-Merdeka.pptx
666928737-Materi-MPLS-Pengenalan-Kurikulum-Merdeka.pptx666928737-Materi-MPLS-Pengenalan-Kurikulum-Merdeka.pptx
666928737-Materi-MPLS-Pengenalan-Kurikulum-Merdeka.pptx
wilda108450
 
8. Materi Masa Pengenalan Lingkungan Sekolah (MPLS ) Disiplin Sekolah.pptx
8. Materi Masa Pengenalan Lingkungan Sekolah (MPLS ) Disiplin Sekolah.pptx8. Materi Masa Pengenalan Lingkungan Sekolah (MPLS ) Disiplin Sekolah.pptx
8. Materi Masa Pengenalan Lingkungan Sekolah (MPLS ) Disiplin Sekolah.pptx
ROFIK24
 
QR code e-Panduan Solat. Carian bacaan dalam solat fardhu dalam Islam
QR code e-Panduan Solat. Carian bacaan dalam solat fardhu dalam IslamQR code e-Panduan Solat. Carian bacaan dalam solat fardhu dalam Islam
QR code e-Panduan Solat. Carian bacaan dalam solat fardhu dalam Islam
Aryada Mahmad
 
1. MENGENAL DAN MEMAHAMI KURIKULUM MERDEKA.pdf
1. MENGENAL DAN MEMAHAMI KURIKULUM MERDEKA.pdf1. MENGENAL DAN MEMAHAMI KURIKULUM MERDEKA.pdf
1. MENGENAL DAN MEMAHAMI KURIKULUM MERDEKA.pdf
sudianaade137
 
PPT RUKOL 2.3 sesi 2 PGP Angkatan 9.pptx.pptx
PPT RUKOL 2.3 sesi 2 PGP Angkatan 9.pptx.pptxPPT RUKOL 2.3 sesi 2 PGP Angkatan 9.pptx.pptx
PPT RUKOL 2.3 sesi 2 PGP Angkatan 9.pptx.pptx
YohanesAriantoAndale
 
Bilangan bulat kelas 7 kurikulum merdeka
Bilangan bulat kelas 7 kurikulum merdekaBilangan bulat kelas 7 kurikulum merdeka
Bilangan bulat kelas 7 kurikulum merdeka
ChyntiaOktavioniAnis
 
materi MPLS tentang ekstrakurikuler.pptx
materi MPLS tentang ekstrakurikuler.pptxmateri MPLS tentang ekstrakurikuler.pptx
materi MPLS tentang ekstrakurikuler.pptx
NoviaSriAstini
 
Materi PPT Akidah Akhlak Kelas 8 Semeter
Materi PPT Akidah Akhlak Kelas 8 SemeterMateri PPT Akidah Akhlak Kelas 8 Semeter
Materi PPT Akidah Akhlak Kelas 8 Semeter
miftahulkhoiri10
 
Modul Ajar Seni Rupa Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Seni Rupa Kelas 10 Fase E Kurikulum MerdekaModul Ajar Seni Rupa Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Seni Rupa Kelas 10 Fase E Kurikulum Merdeka
Fathan Emran
 
PENGENALAN OSIS DAN EKSTRAKURIKULER - Presentasi.pptx
PENGENALAN OSIS DAN EKSTRAKURIKULER - Presentasi.pptxPENGENALAN OSIS DAN EKSTRAKURIKULER - Presentasi.pptx
PENGENALAN OSIS DAN EKSTRAKURIKULER - Presentasi.pptx
SMANSinunukan
 
KALDIK provinsi jawa barat tahun pelajaran 2024 2025.pdf
KALDIK provinsi jawa barat tahun pelajaran 2024 2025.pdfKALDIK provinsi jawa barat tahun pelajaran 2024 2025.pdf
KALDIK provinsi jawa barat tahun pelajaran 2024 2025.pdf
SeptianingTyas5
 
Modul ajar biologi kelas XII MIPA 3.docx
Modul ajar biologi kelas XII MIPA 3.docxModul ajar biologi kelas XII MIPA 3.docx
Modul ajar biologi kelas XII MIPA 3.docx
erliavany21
 

Recently uploaded (20)

MATERI BULLYING DAN NARKOBA UNTUK LINGKUNGAN SEKOLAH.pdf
MATERI BULLYING DAN NARKOBA UNTUK LINGKUNGAN SEKOLAH.pdfMATERI BULLYING DAN NARKOBA UNTUK LINGKUNGAN SEKOLAH.pdf
MATERI BULLYING DAN NARKOBA UNTUK LINGKUNGAN SEKOLAH.pdf
 
PPT CARA BELAJAR EFEKTIF.ppt. Belajar Efektif
PPT CARA BELAJAR EFEKTIF.ppt. Belajar EfektifPPT CARA BELAJAR EFEKTIF.ppt. Belajar Efektif
PPT CARA BELAJAR EFEKTIF.ppt. Belajar Efektif
 
PPT IPS TEMA 1 KELAS 7 KURIKULUM MERDEKA
PPT IPS TEMA 1 KELAS 7 KURIKULUM MERDEKAPPT IPS TEMA 1 KELAS 7 KURIKULUM MERDEKA
PPT IPS TEMA 1 KELAS 7 KURIKULUM MERDEKA
 
Kelas IX - Bab 1 - Berpikir Komputasional.pptx
Kelas IX - Bab 1 - Berpikir Komputasional.pptxKelas IX - Bab 1 - Berpikir Komputasional.pptx
Kelas IX - Bab 1 - Berpikir Komputasional.pptx
 
JURNAL REFLEKSI DWI MINGGUAN MODUL 1.2.pdf
JURNAL REFLEKSI DWI MINGGUAN MODUL 1.2.pdfJURNAL REFLEKSI DWI MINGGUAN MODUL 1.2.pdf
JURNAL REFLEKSI DWI MINGGUAN MODUL 1.2.pdf
 
1.3.f.7. Eksplorasi Konsep - Modul 1.3 (1).pdf
1.3.f.7. Eksplorasi Konsep - Modul 1.3 (1).pdf1.3.f.7. Eksplorasi Konsep - Modul 1.3 (1).pdf
1.3.f.7. Eksplorasi Konsep - Modul 1.3 (1).pdf
 
WAWASAN WIYATA MANDALA SMA NEGERI 1 KEDAMEAN 2024
WAWASAN WIYATA MANDALA SMA NEGERI 1 KEDAMEAN  2024WAWASAN WIYATA MANDALA SMA NEGERI 1 KEDAMEAN  2024
WAWASAN WIYATA MANDALA SMA NEGERI 1 KEDAMEAN 2024
 
Materi MPLS 2024_2025 Mengenal Kurikulum Merdeka
Materi MPLS 2024_2025 Mengenal Kurikulum MerdekaMateri MPLS 2024_2025 Mengenal Kurikulum Merdeka
Materi MPLS 2024_2025 Mengenal Kurikulum Merdeka
 
666928737-Materi-MPLS-Pengenalan-Kurikulum-Merdeka.pptx
666928737-Materi-MPLS-Pengenalan-Kurikulum-Merdeka.pptx666928737-Materi-MPLS-Pengenalan-Kurikulum-Merdeka.pptx
666928737-Materi-MPLS-Pengenalan-Kurikulum-Merdeka.pptx
 
8. Materi Masa Pengenalan Lingkungan Sekolah (MPLS ) Disiplin Sekolah.pptx
8. Materi Masa Pengenalan Lingkungan Sekolah (MPLS ) Disiplin Sekolah.pptx8. Materi Masa Pengenalan Lingkungan Sekolah (MPLS ) Disiplin Sekolah.pptx
8. Materi Masa Pengenalan Lingkungan Sekolah (MPLS ) Disiplin Sekolah.pptx
 
QR code e-Panduan Solat. Carian bacaan dalam solat fardhu dalam Islam
QR code e-Panduan Solat. Carian bacaan dalam solat fardhu dalam IslamQR code e-Panduan Solat. Carian bacaan dalam solat fardhu dalam Islam
QR code e-Panduan Solat. Carian bacaan dalam solat fardhu dalam Islam
 
1. MENGENAL DAN MEMAHAMI KURIKULUM MERDEKA.pdf
1. MENGENAL DAN MEMAHAMI KURIKULUM MERDEKA.pdf1. MENGENAL DAN MEMAHAMI KURIKULUM MERDEKA.pdf
1. MENGENAL DAN MEMAHAMI KURIKULUM MERDEKA.pdf
 
PPT RUKOL 2.3 sesi 2 PGP Angkatan 9.pptx.pptx
PPT RUKOL 2.3 sesi 2 PGP Angkatan 9.pptx.pptxPPT RUKOL 2.3 sesi 2 PGP Angkatan 9.pptx.pptx
PPT RUKOL 2.3 sesi 2 PGP Angkatan 9.pptx.pptx
 
Bilangan bulat kelas 7 kurikulum merdeka
Bilangan bulat kelas 7 kurikulum merdekaBilangan bulat kelas 7 kurikulum merdeka
Bilangan bulat kelas 7 kurikulum merdeka
 
materi MPLS tentang ekstrakurikuler.pptx
materi MPLS tentang ekstrakurikuler.pptxmateri MPLS tentang ekstrakurikuler.pptx
materi MPLS tentang ekstrakurikuler.pptx
 
Materi PPT Akidah Akhlak Kelas 8 Semeter
Materi PPT Akidah Akhlak Kelas 8 SemeterMateri PPT Akidah Akhlak Kelas 8 Semeter
Materi PPT Akidah Akhlak Kelas 8 Semeter
 
Modul Ajar Seni Rupa Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Seni Rupa Kelas 10 Fase E Kurikulum MerdekaModul Ajar Seni Rupa Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Seni Rupa Kelas 10 Fase E Kurikulum Merdeka
 
PENGENALAN OSIS DAN EKSTRAKURIKULER - Presentasi.pptx
PENGENALAN OSIS DAN EKSTRAKURIKULER - Presentasi.pptxPENGENALAN OSIS DAN EKSTRAKURIKULER - Presentasi.pptx
PENGENALAN OSIS DAN EKSTRAKURIKULER - Presentasi.pptx
 
KALDIK provinsi jawa barat tahun pelajaran 2024 2025.pdf
KALDIK provinsi jawa barat tahun pelajaran 2024 2025.pdfKALDIK provinsi jawa barat tahun pelajaran 2024 2025.pdf
KALDIK provinsi jawa barat tahun pelajaran 2024 2025.pdf
 
Modul ajar biologi kelas XII MIPA 3.docx
Modul ajar biologi kelas XII MIPA 3.docxModul ajar biologi kelas XII MIPA 3.docx
Modul ajar biologi kelas XII MIPA 3.docx
 

power point struktur data tree atau pohon

  • 2. Definisi • Pohon (Tree) adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. • Pohon termasuk struktur non linear yang didefinisikan sebagai data yang terorganisir dari suatu item informasi cabang yang saling terkait. • Pohon yang dalam analisis pemecahan masalah pengambilan keputusan :  Pemetaan mengenai alternatif-alternatif pemecahan masalah yang dapat diambil dari masalah tersebut.  Pohon tersebut juga memperlihatkan faktor-faktor kemungkinan/probabilitas yang akan mempengaruhi alternatif-alternatif keputusan tersebut, disertai dengan estimasi hasil akhir yang akan didapat bila kita mengambil alternatif keputusan tersebut.
  • 4. Istilah dalam Tree Term Definition Node Parent Child Root Sibling Leaf Level Depth Complete Balanced Sebuah elemen dalam sebuah tree; berisi sebuah informasi Node yang berada di atas node lain secara langsung; Q adalah parent dari R dan S Cabang langsung dari sebuah node; D dan E merupakan children dari B Node teratas yang tidak punya parent (P) Sebuah node lain yang memiliki parent yang sama; Sibling dari Q adalah T karena memiliki parent yang sama yaitu P Sebuah node yang tidak memiliki children. R, S, V, W adalah leaf (daun). Leaf biasa disebut sebagai external node, sedangkan node selainnya disebut sebagai internal node. Q, B, T, U adalah internal node Semua node yang memiliki jarak yang sama dari root. Plevel 1; Q,Tlevel 2; R, S, Ulevel 3; V, W level 4 Jumlah level yang ada dalam tree Semua parent memiliki children yang penuh Semua subtree memiliki depth yang sama
  • 5. Pengantar: Binary Tree • Bentuk Pohon Berakar yang lebih mudah dikelola dalam komputer adalah Pohon Biner (Binary Tree). • Binary Tree lebih dikenal sebagai Pohon Umum (General Tree) yang dapat didefinisikan sebagai kumpulan simpul yang mungkin kosong atau mempunyai akar dan dua Subpohon yang saling terpisah yang disebut dengan Subpohon Kiri/cabang kiri (Left Subtree) dan Subpohon Kanan/cabang kanan (Right Subtree).
  • 6. Struktur Binary Tree • Karakteristik Pohon Biner (Binary Tree) : 1. Setiap Simpul paling banyak hanya memiliki dua buah anak 2. Derajat Tertinggi dari setiap Simpul adalah dua. 3. Dibedakan antara Cabang Kiri dan Cabang Kanan. 4. Dimungkinkan tidak mempunyai Simpul. • Masing-masing simpul dalam binary tree terdiri dari tiga bagian yaitu sebuah data dan dua buah pointer yang dinamakan pointer kiri dan kanan. Pointer Data Pointer
  • 8. • Pohon biner miring (skewed tree)
  • 10. Pembentukan Tree Langkah-langkah Pembentukan Binary Tree: 1. Siapkan node baru - alokasikan memorinya - masukkan infonya - set pointer kiri & kanan = NULL 2. Sisipkan pada posisi yang tepat - penelusuran  utk menentukan posisi yang tepat; info yang nilainya lebih besar dari parent akan ditelusuri di sebelah kanan, yang lebih kecil dari parent akan ditelusuri di sebelah kiri - penempatan  info yang nilainya lebih dari parent akan ditempatkan di sebelah kanan, yang lebih kecil di sebelah kiri
  • 11. Metode Traversal • Salah satu operasi yang paling umum dilakukan terhadap sebuah tree adalah kunjungan (traversing) • Sebuah kunjungan berawal dari root, mengunjungi setiap node dalam tree tersebut tepat hanya sekali – Mengunjungi artinya memproses data/info yang ada pada node yang bersangkutan • Kunjungan bisa dilakukan dengan 3 cara: 1. Preorder (Prefix) 2. Inorder (Infix) 3. Postorder (Postfix) • Ketiga macam kunjungan tersebut bisa dilakukan secara rekursif dan non rekursif.
  • 12. Preorder (Prefix) • Kunjungan preorder, juga disebut dengan depth first order, menggunakan urutan:  Cetak isi simpul yang dikunjungi  Kunjungi cabang kiri  Kunjungi cabang kanan void preorder(pohon ph) { if (ph != NULL) { printf("%c ", ph->info); preorder(ph->kiri); preorder(ph->kanan); } } P A T S I U R P AS U T R I
  • 13. Inorder (Infix) • Kunjungan secara inorder, juga sering disebut dengan symmetric order, menggunakan urutan:  Kunjungi cabang kiri  Cetak isi simpul yang dikunjungi  Kunjungi cabang kanan void inorder(pohon ph) { if (ph != NULL) { inorder(ph->kiri); printf("%c", ph->info); inorder(ph->kanan); } } P A T S U R I S AU P R T I
  • 14. Postorder (Postfix) • Kunjungan secara postorder menggunakan urutan:  Kunjungi cabang kiri  Kunjungi cabang kanan  Cetak isi simpul yang dikunjungi void postorder(pohon ph) { if (ph != NULL) { postorder(ph->kiri); postorder(ph->kanan); printf("%c ", ph->info); } } P A T S U R I S UA R I T P
  • 15. Contoh: Pre, In, and Post Order
  • 16. Contoh: Pre, In, and Post Order Diketahui level: 54 40 66 20 50 59 75 57 62 Gambar pohon biner dan telusuri Pre Order, In Order dan Post Ordernya.
  • 17. Kasus traversal T E R I L S A Pre Order: T E L S R A I In Order : L E S T A R I Post Order: L S E A I RT
  • 18. Jenis traversal tree ada 3 1. Pre Order  Kunjungi simpul akar  Sub kiri  Sub kanan Contoh: Tree = (C * D) + E, maka Pre Order = +*CDE 2. In Order  Sub kiri  Kunjungi simpul akar  Sub kanan Contoh, Tree = (C * D) + E, maka In Order = C*D+E 3. Post Order  Sub kiri Sub kanan Kunjungi simpul akar Contoh, Tree = (C * D) + E, maka Post Order = CD*E+ C D
  • 19. Contoh traversal Tentukan traversal tree dari tree: [ A ^ (B - C) / (E * F) +G] Maka: Pre Order = /^-BCA+*EFG In Order = B-C^A/E*F+G Post Order = BC-A^EF*G+/ Perhatikan operator dengan operasi terbanyak/terberat akan sebagai ROOT. Persamaan In Order adalah mirip dengan traversal.
  • 20. Deklarasi Tree typedef char typeInfo; typedef struct Node tree; struct Node { typeInfo info; /*jenis data*/ tree *kiri; /* cabang kiri */ tree *kanan; /* cabang kanan */ } Declarasi struct typedef struct Node //struct Node { int data; //char data; Node *kiri; Node *kanan; Node *parent; }; Node *pohon = NULL;
  • 21. Contoh 1: Program Binary Tree //Tree_Binary //header file #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <iostream> using namespace std; //deklarasi AWAL struct sebuahtree typedef struct Node { int data; Node *kiri; Node *kanan; }; Node *pohon = NULL; //fungsi untuk menambahkan node baru void tambah (Node **root, int databaru) { //jika root masih kosong if ((*root)==NULL) { //pembuatan node baru Node *baru; //alokasi memori dari node yang dibuat baru = new Node; //inisialisasi awal node yang baru dibuat baru->data=databaru; baru->kiri=NULL; baru->kanan=NULL; (*root) = baru; (*root) -> kiri = NULL; (*root) -> kanan = NULL; //jika menunjuk ke NULL artinya tidak mempunyai child printf("Data Bertambah!"); }
  • 22. Sambungan …#1 //jika data yang akan dimasukkan lebih kecil daripada elemen root, maka akan diletakkan di node sebelah kiri. else if (databaru<(*root)->data) tambah(&(*root)->kiri, databaru); //jika data yang akan dimasukkan lebih besar daripada elemen root, maka akan diletakkan di node sebelah kanan else if (databaru>(*root)->data) tambah(&(*root)->kanan, databaru); //jika saat dicek data yang akan dimasukkan memiliki nilai yang sama dengan data pada root else if (databaru==(*root)->data) printf("Data Sudah ada!"); } //fungsi yang digunakan untuk mencetak tree secara preOrder void preOrder(Node *root) { if(root!=NULL) { if(root->data!=NULL) { printf("%d ",root->data); } preOrder(root->kiri); preOrder(root->kanan); } } //fungsi yang digunakan untuk mencetak tree secara inOrder void inOrder(Node *root) { if(root!=NULL)
  • 23. Sambungan …#2 if(root!=NULL) { inOrder(root->kiri); if(root->data!=NULL) { printf("%d ",root->data); } inOrder(root->kanan); } } //fungsi yang digunakan untuk mencetak tree secara postOrder void postOrder(Node *root) { if(root!=NULL) { postOrder(root->kiri); postOrder(root->kanan); if(root->data!=NULL) { printf("%d ",root->data); } } } //fungsi utama int main() { //deklarasikan variabel char pil; while (true) { system("cls"); //bersihkan layar char data; printf("t#PROGRAM TREE Dev C++#"); printf("nt================="); printf("nMENU"); printf("n----n"); printf("[1] Tambah Datan"); printf("[2] Lihat Pre-Ordern"); printf("[3] Lihat In-Ordern"); printf("[4] Lihat Post-Ordern"); printf("[X] Keluarn"); printf("Pilihan Anda : "); scanf("%c",&pil); fflush(stdin); //mengosongkan buffering
  • 24. Sambungan …#3 switch(pil) { //jika pil bernilai '1' case '1': printf("nINPUT : "); printf("n-------"); printf("nMasukkan data: "); scanf("%d", &data); //panggil fungsi untuk menambah node yang berisi data pada tree tambah(&pohon,data); _getch(); break; //jika pil bernilai '2' case '2': printf("nOUTPUT PRE ORDER : "); printf("n------------------n"); if(pohon!=NULL) //panggil fungsi untuk mencetak data secara preOrder preOrder(pohon); else printf("Masih Kosong!!!"); _getch(); break; //jika pil bernilai '3' case '3': printf("nOUTPUT IN ORDER : "); printf("n------------------n"); if(pohon!=NULL) //panggil fungsi untuk mencetak data secara inOrder inOrder(pohon); else printf("Masih Kosong!!!"); _getch(); break; //jika pil bernilai '4' case '4': printf("nOUTPUT POST ORDER: "); printf("n------------------n"); if(pohon!=NULL) //panggil fungsi untuk mencetak data secara postOrder postOrder(pohon); else printf("Masih Kosong!!!"); _getch(); break;
  • 25. Sambungan …#4 //jika pil bernilai 'X' atau 'x' case 'X'|'x': exit(0); break; } } } Catatan: • Entri data satu per satu. • Pre Order  sesuai dengan data yang dientri • In Order  Diurutkan dari kecil ke besar • Post Order  susunan output seperti distribusi normal. Data pertama terletak di akhir. • Contoh data entry: 60 45 30 70 40 90 25 80 Pelajari contoh lain dalam link di bawah ini: http://www.nblognlife.com/2014/12/binary -search-tree-bst-tree-lanjutan.html
  • 26. OUTPUT PROGRAM: M A R S T E Contoh 2: Program Gambar Tree //Diketahui Pre Order: MASTER //header file #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <iostream> using namespacestd; //Deklarasi Tree typedef struct node { char s152; node *kiri; node *kanan; }; node *root=NULL;
  • 27. Sambungan …#1 //Tambah data void Tambahdata(node **root,char u152) { if((*root)==NULL){ node *baru; baru= new node; baru->s152 = u152; baru->kiri = NULL; baru->kanan = NULL; (*root)=baru; } } //Pre Order void preorder(node *root) { if(root !=NULL) { printf("%c ", root->s152); preorder(root->kiri); preorder(root->kanan); } } //In Order void inorder(node *root) { if(root !=NULL) { inorder(root->kiri); printf("%c ", root->s152); inorder(root->kanan); } } //Post Order void postorder(node *root) { if(root !=NULL) { postorder(root->kiri); postorder(root->kanan); printf("%c ", root->s152); } }
  • 28. Sambungan …#2 //Program utama main() { char g152; Tambahdata(&root,g152='M'); Tambahdata(&root->kiri,g152='A'); Tambahdata(&root->kiri->kiri,g152='S'); Tambahpang(&root->kiri->kiri->kiri, g152='T'); Tambahdata(&root->kiri->kiri->kanan,g152='E'); Tambahdata(&root->kanan,g152='R'); printf("Tampilan secara PreOrder : "); preorder(root); printf("nTampilan secara InOrder : "); inorder(root); printf("nTampilan secara PostOrder : "); postorder(root); getch(); return 0; }
  • 29. LATIHAN 19 A. Asumsikan anda mempunyai sejumlah dana untuk diinvestasikan pada dua alternatif proyek, yaitu proyekAdan B.Peluang proyek A akan memberikan keuntunganadalah 25% dengan nilai keuntungan 75 juta. Peluang proyek B akan memberikan keuntungan adalah 45% dengan nilai keuntungan 25 juta. Buatlah pohon keputusan untuk membantu anda dalam mengambil keputusan. B. Buatlah pohon biner dari barisan bilangan berikut: 1. 12, 22, 8, 19, 10, 9, 20, 4, 2, 6 2. B, C, D, E, Z, J, N, K, W, L, O, E, G 3. 7, 13, 4, 6, 5, 9, 15, 20, 60, 14, 40, 70 4. 50, 45, 55, 50, 40, 50, 60, 70, 40, 35, 30, 20, 80, 75, 85 5. P,N, L, Q, R, T, S, U, M, O, Y,Z, O
  • 30. C. Tentukan traversal tree dari tree (A * B) + (C +D) D. Tentukan traversal tree dari tree (C * F)^A + (B /D)+G E. Dari contoh program biner di atas, buatlah program Pohon Biner yang dapat melakukan tambah data secara serentak: 1. Memasukkan data 2. Melakukan Traverse 3. Menghitung jumlah node F. Buatlah program untuk menampilkan node baru ke dalam pohon dengan menggunakan prosedur preorder, inorder, dan postorder sehingga akan didapatkan hasil : Tampilan secara PreOrder : L A K C N I Tampilan secara InOrder : K A N C I L Tampilan secara PostOrder : K N I C A L