SlideShare a Scribd company logo
1 of 45
STRUKTUR DATA (10)
tree manipulation
Oleh Antonius Rachmat C,
S.Kom
Tree
• Kumpulan node yang saling terhubung satu sama lain
dalam suatu kesatuan yang membentuk layakya struktur
sebuah pohon.
• Struktur pohon adalah suatu cara merepresentasikan
suatu struktur hirarki (one-to-many) secara grafis yang
mirip sebuah pohon, walaupun pohon tersebut hanya
tampak sebagai kumpulan node-node dari atas ke
bawah.
• Suatu struktur data yang tidak linier yang
menggambarkan hubungan yang hirarkis (one-to-many)
dan tidak linier antara elemen-elemennya.
Tree (2)
• Tree Statik : isi node-nodenya tetap
karena bentuk pohonnya sudah
ditentukan.
• Tree Dinamik : isi nodenya berubah-ubah
karena proses penambahan (insert) dan
penghapusan (delete)
Node Root
• Node root dalam sebuah tree adalah suatu node
yang memiliki hiarki tertinggi dan dapat juga
memiliki node-node anak. Semua node dapat
ditelusuri dari node root tersebut.
• Node root adalah node khusus yang tercipta
pertama kalinya.
• Node-node lain di bawah node root saling
terhubung satu sama lain dan disebut subtree
Implementasi Tree
• Contoh penggunaan struktur pohon :
• Silsilah keluarga
• Parse Tree (pada compiler)
• Struktur File
• Pertandingan
Tree Example
Tree Example
Tree Example
Representasi Tree
Representasi Tree
• Notasi Tingkat
• Notasi Kurung
• (A(B(D,E(I,J)),C(F,G,H)))
Latihan
• Buat diagram venn dan notasi kurung
XX
YY
RR SS
QQ
TT WWUU ZZ
PP
MM NN
Terminologi Tree
Sebuah Tree
Jenis Tree
• Binary Tree
• Suatu tree dengan syarat bahwa tiap node
hanya boleh memiliki maksimal dua subtree
dan kedua subtree tersebut harus terpisah.
• Tiap node dalam binary tree hanya boleh
memiliki paling banyak dua child.
Binary Tree (2)
Binary Tree
Binary Tree
Binary Tree
Node pada binary tree
• Jumlah maksimum node pada setiap tingkat adalah 2n
• Node pada binary tree maksimum berjumlah 2n
-1
Implementasi Program
• Tree dapat dibuat dengan menggunakan linked
list secara rekursif.
• Linked list yang digunakan adalah double linked
list non circular
• Data yang pertama kali masuk akan menjadi
node root.
• Data yang lebih kecil dari data node root akan
masuk dan menempati node kiri dari node root,
sedangkan jika lebih besar dari data node root,
akan masuk dan menempati node di sebelah
kanan node root.
Implementasi Program
Operasi-operasi Tree
• Create: membentuk sebuah tree baru yang
kosong.
• pohon = NULL;
• Clear: menghapus semua elemen tree.
• pohon = NULL;
• Empty: mengetahui apakah tree kosong atau
tidak
• int isEmpty(Tree *pohon){
• if(pohon == NULL) return 1;
• else return 0;
• }
Operasi-operasi Tree
• Insert: menambah node ke dalam Tree secara rekursif. Jika data
yang akan dimasukkan lebih besar daripada elemen root, maka
akan diletakkan di node sebelah kanan, sebaliknya jika lebih kecil
maka akan diletakkan di node sebelah kiri. Untuk data pertama
akan menjadi elemen root.
• Find: mencari node di dalam Tree secara rekursif sampai node
tersebut ditemukan dengan menggunakan variable bantuan
ketemu. Syaratnya adalah tree tidak boleh kosong.
• Traverse: yaitu operasi kunjungan terhadap node-node dalam
pohon dimana masing-masing node akan dikunjungi sekali.
• Count: menghitung jumlah node dalam Tree
• Height : mengetahui kedalaman sebuah Tree
• Find Min dan Find Max : mencari nilai terkecil dan terbesar
pada Tree
• Child : mengetahui anak dari sebuah node (jika punya)
Jenis Transverse
• PreOrder: cetak node yang dikunjungi,
kunjungi left, kunjungi right
• InOrder: kunjungi left, cetak node yang
dikunjungi, kunjungi right
• PostOrder: kunjungi left, kunjungi right,
cetak node yang dikunjungi
Ilustrasi Insert
Ilustrasi Insert
• 4. insert(left,3)
Recursive Insert
• void tambah(Tree **root,int databaru){
• if((*root) == NULL){
• Tree *baru;
• baru = new Tree;
• baru->data = databaru;
• baru->left = NULL;
• baru->right = NULL;
• (*root) = baru;
• (*root)->left = NULL;
• (*root)->right = NULL;
• }
• else if(databaru < (*root)->data)
• tambah(&(*root)->left,databaru);
• else if(databaru > (*root)->data)
• tambah(&(*root)->right,databaru);
• else if(databaru == (*root)->data)
• printf("Data sudah ada!");
• }
Ilustrasi Kunjungan
Ilustrasi Kunjungan
Ilustrasi Kunjungan
Ilustrasi Kunjungan
Kunjungan LevelOrder
• Hasil kunjungan: “ABCDEFGHI”
• Algoritma:
• Siapkan antrian yang kosong
• Inisialisasi: masukkan root ke dalam antrian
• Iterasi: selama Antrian tidak kosong, lakukan:
• Kunjungi elemen pada antrian
• Masukkan node->kiri dan node->kanan ke dalam antrian
asal node tersebut tidak NULL.
• Keluarkan elemen pertama pada antrian
Level Order
1
2 3
4 5 6 7
-Masukkan root ke antrian
Antrian : 1
-Kunjungi root (1), masukkan node kiri dan kanan
Antrian : 1, 2, 3
-Keluarkan antrian terdepan (node 1)
Antrian : 2, 3
-Kunjungi node 2, masukkan 4 dan 5
Antrian : 2, 3, 4, 5
-Keluarkan node terdepan (node 2)
Antrian : 3, 4, 5
-Kunjungi node 3, masukkan 6 dan 7
Antrian : 3, 4, 5, 6, 7
-Keluarkan antrian terdepan (node 3)
Antrian : 4, 5, 6, 7
-Kunjungi node 4, tidak ada anak, keluarkan (4)
-Kunjungi node 5, tidak ada anak, keluarkan (5)
-Kunjungi node 6, tidak ada anak, keluarkan (6)
-Kunjungi node 7, tidak ada anak, keluarkan (7)
Level Order pseudocode
• void LevelOrder(Tree *root)
• {
• Queue queue;
• Enqueue(queue,root);
• while(isEmpty(queue) != 1)
• {
• Tree n = GetQueue(); //visit
• print(n->data);
if(n->left!=NULL)
Enqueue(n->left); //Enqueue if exists
• if(n->right!=NULL)
Enqueue(n->right); //Enqueue if exists
• Dequeue(queue); //out
• }
• }
Contoh implementasi
• Misalkan suatu ekspresi berikut: 3 + 2 * 5
– 4
Searching in Tree
• Tree *cari(Tree *root,int data){
• if(root==NULL) return NULL;
• else if(data < root->data) return (cari(root->left,data));
• else if(data > root->data) return (cari(root-
>right,data));
• else if(data == root->data) return root;
• }
• Pencarian dilakukan secara rekursif, dimulai dari node root, jika
data yang dicari lebih kecil daripada data node root, maka
pencarian dilakukan di sub node sebelah kiri, sedangkan jika data
yang dicari lebih besar daripada data node root, maka pencarian
dilakukan di sub node sebelah kanan, jika data yang dicari sama
dengan data suatu node berarti kembalikan node tersebut dan
berarti data ditemukan.
Ilustrasi Searching
Keterangan Searching
• Root = 6 dan 8 > 6, maka akan dicari di sub
node bagian kanan root.
• Root = 10 dan 8 < 10, maka akan dicari di sub
node bagian kiri root.
• Root = 7 dan 8 > 7, maka akan dicari di sub
node bagian kanan root.
• Root = 8, berarti 8 = 8, maka akan
dikembalikan node tersebut dan dianggap
ketemu!
Jumlah Node Tree
• int count(Tree *root)
• {
• if (root == NULL) return 0;
• return count(root->left) + count(root->right) + 1;
• }
• Penghitungan jumlah node dalam tree dilakukan dengan
cara mengunjungi setiap node, dimulai dari root ke
subtree kiri, kemudian ke subtree kanan dan masing-
masing node dicatat jumlahnya, dan terakhir jumlah
node yang ada di subtree kiri dijumlahkan dengan
jumlah node yang ada di subtree kanan ditambah 1 yaitu
node root.
Kedalaman (height)
Node Tree
• int height(Tree *root)
• {
• if (root == NULL) return -1;
• int u = height(root->left), v = height(root-
>right);
• if (u > v) return u+1;
• else return v+1;
• }
• Penghitungan kedalaman dihitung dari setelah root, yang dimulai dari
subtree bagian kiri kemudian ke subtree bagian kanan. Untuk masing-
masing kedalaman kiri dan kanan akan dibandingkan, jika ternyata subtree
kiri lebih dalam, maka yang dipakai adalah jumlah kedalaman subtree kiri,
demikian sebaliknya. Hal ini didasarkan pada prinsip binary tree, dimana
tree-nya selalu memiliki maksimal 2 node anak.
Find Min Node
• Tree *FindMin(Tree *root)
• {
• if(root == NULL)
• return NULL;
• else
• if(root->left == NULL)
• return root;
• else
• return FindMin(root->left);
• }
• Penggunaan:
• Tree *t = FindMin(pohon);
Mencari Leaf (daun)
• void leaf(Tree *root){
• if(root == NULL) printf("kosong!");
• if(root->left!=NULL) leaf(root->left);
• if(root->right!=NULL) leaf(root->right);
• if(root->right == NULL && root->left == NULL)
printf("%d ",root->data);
• }
Konversi Tree Biasa ke Binary
Tree
Anak pertama menjadi anak kiri, anak ke-2 menjadi cucu kanan, ke-3
jadi cicit kanan dst
Pembentukan Tree dari
Preorder
• Baca hasil Preorder dari paling kanan ke
kiri untuk mencari node yang derajatnya
lebih dari 0, kemudian ambil node
sebanyak derajatnya ke kanan.
Hilangkan node yang terambil tersebut
dari hasil Preorder
• Lanjutkan langkah 1, dan seterusnya
sampai semua hasil traversal habis
Contoh
• Preorder: U V W X Y
• Derajat: 2 2 0 0 0
• Derajat bukan nol yang ditemukan
pertama dari kanan adalah V, ambil 2
node kekanan, W dan X, hilangkan.
• Lanjutkan, ketemu U berderajat 2, berarti
U punya anak V dan Y
Soal-soal
• Buatlah fungsi untuk menghapus suatu
node pada Tree!
• Buatlah program lengkap untuk
memanipulasi dan mensimulasikan tree
dengan berbasis menu!

More Related Content

What's hot

What's hot (20)

Bab 9 tree
Bab 9 treeBab 9 tree
Bab 9 tree
 
Pertemuan 1 revisijan2013-mhs
Pertemuan 1 revisijan2013-mhsPertemuan 1 revisijan2013-mhs
Pertemuan 1 revisijan2013-mhs
 
Binary Search pada Java
Binary Search pada JavaBinary Search pada Java
Binary Search pada Java
 
Materi Struktur Data Tree
Materi Struktur Data TreeMateri Struktur Data Tree
Materi Struktur Data Tree
 
Array statis if
Array statis ifArray statis if
Array statis if
 
Latihan
LatihanLatihan
Latihan
 
Pertemuan viii Sorting
Pertemuan viii SortingPertemuan viii Sorting
Pertemuan viii Sorting
 
Makalah Kunjungan Binary Tree
Makalah Kunjungan Binary TreeMakalah Kunjungan Binary Tree
Makalah Kunjungan Binary Tree
 
Sequential Search
Sequential SearchSequential Search
Sequential Search
 
Laporan Resmi BAB 1 (Tree)
Laporan Resmi BAB 1 (Tree)Laporan Resmi BAB 1 (Tree)
Laporan Resmi BAB 1 (Tree)
 
Algoritma dan Struktur Data - pohon biner
Algoritma dan Struktur Data - pohon binerAlgoritma dan Struktur Data - pohon biner
Algoritma dan Struktur Data - pohon biner
 
Array
ArrayArray
Array
 
Makalah pencarian dan pengurutan data
Makalah pencarian dan pengurutan dataMakalah pencarian dan pengurutan data
Makalah pencarian dan pengurutan data
 
Sd bab 1 (pengantar struktur data)
Sd bab 1 (pengantar struktur data)Sd bab 1 (pengantar struktur data)
Sd bab 1 (pengantar struktur data)
 
Materi array
Materi arrayMateri array
Materi array
 
Bab x tree (pohon)
Bab x   tree (pohon)Bab x   tree (pohon)
Bab x tree (pohon)
 
7 Metode Pencarian Data Array
7 Metode Pencarian Data Array7 Metode Pencarian Data Array
7 Metode Pencarian Data Array
 
Makalah array
Makalah arrayMakalah array
Makalah array
 
Materi 7. array
Materi 7. arrayMateri 7. array
Materi 7. array
 
Makalah array
Makalah arrayMakalah array
Makalah array
 

Viewers also liked

Emili teixidor
Emili teixidorEmili teixidor
Emili teixidorlacetania
 
Centro Vital Dent di Cagliari - La sigillatura
Centro Vital Dent di Cagliari - La sigillaturaCentro Vital Dent di Cagliari - La sigillatura
Centro Vital Dent di Cagliari - La sigillaturaVitaldentItalia
 
Gurgaon, Godrej Summit, SECTOR-104,BEST INVESTMENT..
Gurgaon, Godrej Summit, SECTOR-104,BEST INVESTMENT..Gurgaon, Godrej Summit, SECTOR-104,BEST INVESTMENT..
Gurgaon, Godrej Summit, SECTOR-104,BEST INVESTMENT..Geetanjali Geetu
 
バコロドBSEC(bacolod sparta english center)取材記事:日本人が少ないフィリピン語学学校
バコロドBSEC(bacolod sparta english center)取材記事:日本人が少ないフィリピン語学学校バコロドBSEC(bacolod sparta english center)取材記事:日本人が少ないフィリピン語学学校
バコロドBSEC(bacolod sparta english center)取材記事:日本人が少ないフィリピン語学学校フィリピン留学会社 フィルイングリッシュ
 
Faktorisasi a ljabar
Faktorisasi a ljabarFaktorisasi a ljabar
Faktorisasi a ljabarNur Fadzri
 
Painel3 - Autobiografia Ambiental de escola. O exemplo da Lajes do Pico - Olg...
Painel3 - Autobiografia Ambiental de escola. O exemplo da Lajes do Pico - Olg...Painel3 - Autobiografia Ambiental de escola. O exemplo da Lajes do Pico - Olg...
Painel3 - Autobiografia Ambiental de escola. O exemplo da Lajes do Pico - Olg...CIDAADS
 
Ring a hole competion 2012
Ring a hole competion 2012Ring a hole competion 2012
Ring a hole competion 2012CJH47
 
Comprar um computador beatriz e ines
Comprar um computador beatriz e inesComprar um computador beatriz e ines
Comprar um computador beatriz e inesnonoano_terceira
 
craigBurnettEmploymentReference
craigBurnettEmploymentReferencecraigBurnettEmploymentReference
craigBurnettEmploymentReferenceCraig Burnett
 

Viewers also liked (16)

Emili teixidor
Emili teixidorEmili teixidor
Emili teixidor
 
Como limpar o seu disco
Como limpar o seu discoComo limpar o seu disco
Como limpar o seu disco
 
Centro Vital Dent di Cagliari - La sigillatura
Centro Vital Dent di Cagliari - La sigillaturaCentro Vital Dent di Cagliari - La sigillatura
Centro Vital Dent di Cagliari - La sigillatura
 
Gurgaon, Godrej Summit, SECTOR-104,BEST INVESTMENT..
Gurgaon, Godrej Summit, SECTOR-104,BEST INVESTMENT..Gurgaon, Godrej Summit, SECTOR-104,BEST INVESTMENT..
Gurgaon, Godrej Summit, SECTOR-104,BEST INVESTMENT..
 
Yosemite Falls
Yosemite FallsYosemite Falls
Yosemite Falls
 
バコロドBSEC(bacolod sparta english center)取材記事:日本人が少ないフィリピン語学学校
バコロドBSEC(bacolod sparta english center)取材記事:日本人が少ないフィリピン語学学校バコロドBSEC(bacolod sparta english center)取材記事:日本人が少ないフィリピン語学学校
バコロドBSEC(bacolod sparta english center)取材記事:日本人が少ないフィリピン語学学校
 
Tugas kelompok so
Tugas kelompok soTugas kelompok so
Tugas kelompok so
 
Equine Essential Oil First Aid Kit
Equine Essential Oil First Aid KitEquine Essential Oil First Aid Kit
Equine Essential Oil First Aid Kit
 
Faktorisasi a ljabar
Faktorisasi a ljabarFaktorisasi a ljabar
Faktorisasi a ljabar
 
Painel3 - Autobiografia Ambiental de escola. O exemplo da Lajes do Pico - Olg...
Painel3 - Autobiografia Ambiental de escola. O exemplo da Lajes do Pico - Olg...Painel3 - Autobiografia Ambiental de escola. O exemplo da Lajes do Pico - Olg...
Painel3 - Autobiografia Ambiental de escola. O exemplo da Lajes do Pico - Olg...
 
Фотографии, созданные СЗМ FemtoScan
Фотографии, созданные СЗМ FemtoScanФотографии, созданные СЗМ FemtoScan
Фотографии, созданные СЗМ FemtoScan
 
Space business
Space businessSpace business
Space business
 
Ring a hole competion 2012
Ring a hole competion 2012Ring a hole competion 2012
Ring a hole competion 2012
 
Comprar um computador beatriz e ines
Comprar um computador beatriz e inesComprar um computador beatriz e ines
Comprar um computador beatriz e ines
 
Ffurflen gais
Ffurflen gaisFfurflen gais
Ffurflen gais
 
craigBurnettEmploymentReference
craigBurnettEmploymentReferencecraigBurnettEmploymentReference
craigBurnettEmploymentReference
 

Similar to STRUKTUR_DATA_TREE

Similar to STRUKTUR_DATA_TREE (20)

Tree
TreeTree
Tree
 
8
88
8
 
Bab 5 linked list
Bab 5 linked listBab 5 linked list
Bab 5 linked list
 
Asd sesi searching part1
Asd sesi searching part1Asd sesi searching part1
Asd sesi searching part1
 
Tree
TreeTree
Tree
 
Asd sesi tree part1
Asd sesi tree part1Asd sesi tree part1
Asd sesi tree part1
 
Bab 6 singly_linked_list
Bab 6 singly_linked_listBab 6 singly_linked_list
Bab 6 singly_linked_list
 
Bab 10 tree_lanjutan
Bab 10 tree_lanjutanBab 10 tree_lanjutan
Bab 10 tree_lanjutan
 
Asd sesi searching part 2
Asd sesi searching part 2Asd sesi searching part 2
Asd sesi searching part 2
 
Buku struktur data pages-111-122
Buku struktur data pages-111-122Buku struktur data pages-111-122
Buku struktur data pages-111-122
 
Pertemuan 4 revisijan2013-mhs
Pertemuan 4 revisijan2013-mhsPertemuan 4 revisijan2013-mhs
Pertemuan 4 revisijan2013-mhs
 
Algoritma dan Struktur Data - pengenalan pohon
Algoritma dan Struktur Data - pengenalan pohonAlgoritma dan Struktur Data - pengenalan pohon
Algoritma dan Struktur Data - pengenalan pohon
 
Asd sesi tree part2
Asd sesi tree part2Asd sesi tree part2
Asd sesi tree part2
 
Recursion in Python
Recursion in PythonRecursion in Python
Recursion in Python
 
Algoritma dan Struktur Data - Pohon
Algoritma dan Struktur Data - PohonAlgoritma dan Struktur Data - Pohon
Algoritma dan Struktur Data - Pohon
 
Tugas kelompok mi d3_sore
Tugas kelompok mi d3_soreTugas kelompok mi d3_sore
Tugas kelompok mi d3_sore
 
Linked list
Linked listLinked list
Linked list
 
Queue dan tree
Queue dan treeQueue dan tree
Queue dan tree
 
Struktur data
Struktur dataStruktur data
Struktur data
 
Stack with linked list(algodat)
Stack with linked list(algodat)Stack with linked list(algodat)
Stack with linked list(algodat)
 

Recently uploaded

CASE REPORT ACUTE DECOMPENSATED HEART FAILURE 31 Desember 23.pptx
CASE REPORT ACUTE DECOMPENSATED HEART FAILURE 31 Desember 23.pptxCASE REPORT ACUTE DECOMPENSATED HEART FAILURE 31 Desember 23.pptx
CASE REPORT ACUTE DECOMPENSATED HEART FAILURE 31 Desember 23.pptxresidentcardio13usk
 
Konsep Agribisnis adalah suatu kesatuan kegiatan meliputi salah satu atau ...
Konsep	Agribisnis	adalah	suatu	kesatuan	kegiatan  meliputi		salah	satu	atau		...Konsep	Agribisnis	adalah	suatu	kesatuan	kegiatan  meliputi		salah	satu	atau		...
Konsep Agribisnis adalah suatu kesatuan kegiatan meliputi salah satu atau ...laila16682
 
PPT Kelompok 7 Pembelajaran IPA Modul 7.pptx
PPT Kelompok 7 Pembelajaran IPA Modul 7.pptxPPT Kelompok 7 Pembelajaran IPA Modul 7.pptx
PPT Kelompok 7 Pembelajaran IPA Modul 7.pptxSDN1Wayhalom
 
Power Point materi Mekanisme Seleksi Alam.pptx
Power Point materi Mekanisme Seleksi Alam.pptxPower Point materi Mekanisme Seleksi Alam.pptx
Power Point materi Mekanisme Seleksi Alam.pptxSitiRukmanah5
 
hormon Asam Jasmonat dan Lainnya, pengatur tumbuh tanaman
hormon Asam Jasmonat dan Lainnya, pengatur tumbuh tanamanhormon Asam Jasmonat dan Lainnya, pengatur tumbuh tanaman
hormon Asam Jasmonat dan Lainnya, pengatur tumbuh tanamanAprissiliaTaifany1
 
Modul ajar IPAS Kls 4 materi wujud benda dan perubahannya
Modul ajar IPAS Kls 4 materi wujud benda dan perubahannyaModul ajar IPAS Kls 4 materi wujud benda dan perubahannya
Modul ajar IPAS Kls 4 materi wujud benda dan perubahannyaAnggrianiTulle
 
Dampak Bioteknologi di Bidang Pertanian.pdf
Dampak Bioteknologi di Bidang Pertanian.pdfDampak Bioteknologi di Bidang Pertanian.pdf
Dampak Bioteknologi di Bidang Pertanian.pdfssuser4743df
 
Materi Makna alinea pembukaaan UUD .pptx
Materi Makna alinea pembukaaan UUD .pptxMateri Makna alinea pembukaaan UUD .pptx
Materi Makna alinea pembukaaan UUD .pptxIKLASSENJAYA
 
TEMA 9 SUBTEMA 1 PEMBELAJARAN 1 KELAS 6.pptx
TEMA 9 SUBTEMA 1 PEMBELAJARAN 1 KELAS 6.pptxTEMA 9 SUBTEMA 1 PEMBELAJARAN 1 KELAS 6.pptx
TEMA 9 SUBTEMA 1 PEMBELAJARAN 1 KELAS 6.pptxSyabilAfandi
 
materi+kuliah-ko2-senyawa+aldehid+dan+keton.pdf
materi+kuliah-ko2-senyawa+aldehid+dan+keton.pdfmateri+kuliah-ko2-senyawa+aldehid+dan+keton.pdf
materi+kuliah-ko2-senyawa+aldehid+dan+keton.pdfkaramitha
 

Recently uploaded (10)

CASE REPORT ACUTE DECOMPENSATED HEART FAILURE 31 Desember 23.pptx
CASE REPORT ACUTE DECOMPENSATED HEART FAILURE 31 Desember 23.pptxCASE REPORT ACUTE DECOMPENSATED HEART FAILURE 31 Desember 23.pptx
CASE REPORT ACUTE DECOMPENSATED HEART FAILURE 31 Desember 23.pptx
 
Konsep Agribisnis adalah suatu kesatuan kegiatan meliputi salah satu atau ...
Konsep	Agribisnis	adalah	suatu	kesatuan	kegiatan  meliputi		salah	satu	atau		...Konsep	Agribisnis	adalah	suatu	kesatuan	kegiatan  meliputi		salah	satu	atau		...
Konsep Agribisnis adalah suatu kesatuan kegiatan meliputi salah satu atau ...
 
PPT Kelompok 7 Pembelajaran IPA Modul 7.pptx
PPT Kelompok 7 Pembelajaran IPA Modul 7.pptxPPT Kelompok 7 Pembelajaran IPA Modul 7.pptx
PPT Kelompok 7 Pembelajaran IPA Modul 7.pptx
 
Power Point materi Mekanisme Seleksi Alam.pptx
Power Point materi Mekanisme Seleksi Alam.pptxPower Point materi Mekanisme Seleksi Alam.pptx
Power Point materi Mekanisme Seleksi Alam.pptx
 
hormon Asam Jasmonat dan Lainnya, pengatur tumbuh tanaman
hormon Asam Jasmonat dan Lainnya, pengatur tumbuh tanamanhormon Asam Jasmonat dan Lainnya, pengatur tumbuh tanaman
hormon Asam Jasmonat dan Lainnya, pengatur tumbuh tanaman
 
Modul ajar IPAS Kls 4 materi wujud benda dan perubahannya
Modul ajar IPAS Kls 4 materi wujud benda dan perubahannyaModul ajar IPAS Kls 4 materi wujud benda dan perubahannya
Modul ajar IPAS Kls 4 materi wujud benda dan perubahannya
 
Dampak Bioteknologi di Bidang Pertanian.pdf
Dampak Bioteknologi di Bidang Pertanian.pdfDampak Bioteknologi di Bidang Pertanian.pdf
Dampak Bioteknologi di Bidang Pertanian.pdf
 
Materi Makna alinea pembukaaan UUD .pptx
Materi Makna alinea pembukaaan UUD .pptxMateri Makna alinea pembukaaan UUD .pptx
Materi Makna alinea pembukaaan UUD .pptx
 
TEMA 9 SUBTEMA 1 PEMBELAJARAN 1 KELAS 6.pptx
TEMA 9 SUBTEMA 1 PEMBELAJARAN 1 KELAS 6.pptxTEMA 9 SUBTEMA 1 PEMBELAJARAN 1 KELAS 6.pptx
TEMA 9 SUBTEMA 1 PEMBELAJARAN 1 KELAS 6.pptx
 
materi+kuliah-ko2-senyawa+aldehid+dan+keton.pdf
materi+kuliah-ko2-senyawa+aldehid+dan+keton.pdfmateri+kuliah-ko2-senyawa+aldehid+dan+keton.pdf
materi+kuliah-ko2-senyawa+aldehid+dan+keton.pdf
 

STRUKTUR_DATA_TREE

  • 1. STRUKTUR DATA (10) tree manipulation Oleh Antonius Rachmat C, S.Kom
  • 2. Tree • Kumpulan node yang saling terhubung satu sama lain dalam suatu kesatuan yang membentuk layakya struktur sebuah pohon. • Struktur pohon adalah suatu cara merepresentasikan suatu struktur hirarki (one-to-many) secara grafis yang mirip sebuah pohon, walaupun pohon tersebut hanya tampak sebagai kumpulan node-node dari atas ke bawah. • Suatu struktur data yang tidak linier yang menggambarkan hubungan yang hirarkis (one-to-many) dan tidak linier antara elemen-elemennya.
  • 3. Tree (2) • Tree Statik : isi node-nodenya tetap karena bentuk pohonnya sudah ditentukan. • Tree Dinamik : isi nodenya berubah-ubah karena proses penambahan (insert) dan penghapusan (delete)
  • 4. Node Root • Node root dalam sebuah tree adalah suatu node yang memiliki hiarki tertinggi dan dapat juga memiliki node-node anak. Semua node dapat ditelusuri dari node root tersebut. • Node root adalah node khusus yang tercipta pertama kalinya. • Node-node lain di bawah node root saling terhubung satu sama lain dan disebut subtree
  • 5. Implementasi Tree • Contoh penggunaan struktur pohon : • Silsilah keluarga • Parse Tree (pada compiler) • Struktur File • Pertandingan
  • 10. Representasi Tree • Notasi Tingkat • Notasi Kurung • (A(B(D,E(I,J)),C(F,G,H)))
  • 11. Latihan • Buat diagram venn dan notasi kurung XX YY RR SS QQ TT WWUU ZZ PP MM NN
  • 14. Jenis Tree • Binary Tree • Suatu tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus terpisah. • Tiap node dalam binary tree hanya boleh memiliki paling banyak dua child.
  • 19. Node pada binary tree • Jumlah maksimum node pada setiap tingkat adalah 2n • Node pada binary tree maksimum berjumlah 2n -1
  • 20. Implementasi Program • Tree dapat dibuat dengan menggunakan linked list secara rekursif. • Linked list yang digunakan adalah double linked list non circular • Data yang pertama kali masuk akan menjadi node root. • Data yang lebih kecil dari data node root akan masuk dan menempati node kiri dari node root, sedangkan jika lebih besar dari data node root, akan masuk dan menempati node di sebelah kanan node root.
  • 22. Operasi-operasi Tree • Create: membentuk sebuah tree baru yang kosong. • pohon = NULL; • Clear: menghapus semua elemen tree. • pohon = NULL; • Empty: mengetahui apakah tree kosong atau tidak • int isEmpty(Tree *pohon){ • if(pohon == NULL) return 1; • else return 0; • }
  • 23. Operasi-operasi Tree • Insert: menambah node ke dalam Tree secara rekursif. Jika data yang akan dimasukkan lebih besar daripada elemen root, maka akan diletakkan di node sebelah kanan, sebaliknya jika lebih kecil maka akan diletakkan di node sebelah kiri. Untuk data pertama akan menjadi elemen root. • Find: mencari node di dalam Tree secara rekursif sampai node tersebut ditemukan dengan menggunakan variable bantuan ketemu. Syaratnya adalah tree tidak boleh kosong. • Traverse: yaitu operasi kunjungan terhadap node-node dalam pohon dimana masing-masing node akan dikunjungi sekali. • Count: menghitung jumlah node dalam Tree • Height : mengetahui kedalaman sebuah Tree • Find Min dan Find Max : mencari nilai terkecil dan terbesar pada Tree • Child : mengetahui anak dari sebuah node (jika punya)
  • 24. Jenis Transverse • PreOrder: cetak node yang dikunjungi, kunjungi left, kunjungi right • InOrder: kunjungi left, cetak node yang dikunjungi, kunjungi right • PostOrder: kunjungi left, kunjungi right, cetak node yang dikunjungi
  • 26. Ilustrasi Insert • 4. insert(left,3)
  • 27. Recursive Insert • void tambah(Tree **root,int databaru){ • if((*root) == NULL){ • Tree *baru; • baru = new Tree; • baru->data = databaru; • baru->left = NULL; • baru->right = NULL; • (*root) = baru; • (*root)->left = NULL; • (*root)->right = NULL; • } • else if(databaru < (*root)->data) • tambah(&(*root)->left,databaru); • else if(databaru > (*root)->data) • tambah(&(*root)->right,databaru); • else if(databaru == (*root)->data) • printf("Data sudah ada!"); • }
  • 31. Ilustrasi Kunjungan Kunjungan LevelOrder • Hasil kunjungan: “ABCDEFGHI” • Algoritma: • Siapkan antrian yang kosong • Inisialisasi: masukkan root ke dalam antrian • Iterasi: selama Antrian tidak kosong, lakukan: • Kunjungi elemen pada antrian • Masukkan node->kiri dan node->kanan ke dalam antrian asal node tersebut tidak NULL. • Keluarkan elemen pertama pada antrian
  • 32. Level Order 1 2 3 4 5 6 7 -Masukkan root ke antrian Antrian : 1 -Kunjungi root (1), masukkan node kiri dan kanan Antrian : 1, 2, 3 -Keluarkan antrian terdepan (node 1) Antrian : 2, 3 -Kunjungi node 2, masukkan 4 dan 5 Antrian : 2, 3, 4, 5 -Keluarkan node terdepan (node 2) Antrian : 3, 4, 5 -Kunjungi node 3, masukkan 6 dan 7 Antrian : 3, 4, 5, 6, 7 -Keluarkan antrian terdepan (node 3) Antrian : 4, 5, 6, 7 -Kunjungi node 4, tidak ada anak, keluarkan (4) -Kunjungi node 5, tidak ada anak, keluarkan (5) -Kunjungi node 6, tidak ada anak, keluarkan (6) -Kunjungi node 7, tidak ada anak, keluarkan (7)
  • 33. Level Order pseudocode • void LevelOrder(Tree *root) • { • Queue queue; • Enqueue(queue,root); • while(isEmpty(queue) != 1) • { • Tree n = GetQueue(); //visit • print(n->data); if(n->left!=NULL) Enqueue(n->left); //Enqueue if exists • if(n->right!=NULL) Enqueue(n->right); //Enqueue if exists • Dequeue(queue); //out • } • }
  • 34. Contoh implementasi • Misalkan suatu ekspresi berikut: 3 + 2 * 5 – 4
  • 35. Searching in Tree • Tree *cari(Tree *root,int data){ • if(root==NULL) return NULL; • else if(data < root->data) return (cari(root->left,data)); • else if(data > root->data) return (cari(root- >right,data)); • else if(data == root->data) return root; • } • Pencarian dilakukan secara rekursif, dimulai dari node root, jika data yang dicari lebih kecil daripada data node root, maka pencarian dilakukan di sub node sebelah kiri, sedangkan jika data yang dicari lebih besar daripada data node root, maka pencarian dilakukan di sub node sebelah kanan, jika data yang dicari sama dengan data suatu node berarti kembalikan node tersebut dan berarti data ditemukan.
  • 37. Keterangan Searching • Root = 6 dan 8 > 6, maka akan dicari di sub node bagian kanan root. • Root = 10 dan 8 < 10, maka akan dicari di sub node bagian kiri root. • Root = 7 dan 8 > 7, maka akan dicari di sub node bagian kanan root. • Root = 8, berarti 8 = 8, maka akan dikembalikan node tersebut dan dianggap ketemu!
  • 38. Jumlah Node Tree • int count(Tree *root) • { • if (root == NULL) return 0; • return count(root->left) + count(root->right) + 1; • } • Penghitungan jumlah node dalam tree dilakukan dengan cara mengunjungi setiap node, dimulai dari root ke subtree kiri, kemudian ke subtree kanan dan masing- masing node dicatat jumlahnya, dan terakhir jumlah node yang ada di subtree kiri dijumlahkan dengan jumlah node yang ada di subtree kanan ditambah 1 yaitu node root.
  • 39. Kedalaman (height) Node Tree • int height(Tree *root) • { • if (root == NULL) return -1; • int u = height(root->left), v = height(root- >right); • if (u > v) return u+1; • else return v+1; • } • Penghitungan kedalaman dihitung dari setelah root, yang dimulai dari subtree bagian kiri kemudian ke subtree bagian kanan. Untuk masing- masing kedalaman kiri dan kanan akan dibandingkan, jika ternyata subtree kiri lebih dalam, maka yang dipakai adalah jumlah kedalaman subtree kiri, demikian sebaliknya. Hal ini didasarkan pada prinsip binary tree, dimana tree-nya selalu memiliki maksimal 2 node anak.
  • 40. Find Min Node • Tree *FindMin(Tree *root) • { • if(root == NULL) • return NULL; • else • if(root->left == NULL) • return root; • else • return FindMin(root->left); • } • Penggunaan: • Tree *t = FindMin(pohon);
  • 41. Mencari Leaf (daun) • void leaf(Tree *root){ • if(root == NULL) printf("kosong!"); • if(root->left!=NULL) leaf(root->left); • if(root->right!=NULL) leaf(root->right); • if(root->right == NULL && root->left == NULL) printf("%d ",root->data); • }
  • 42. Konversi Tree Biasa ke Binary Tree Anak pertama menjadi anak kiri, anak ke-2 menjadi cucu kanan, ke-3 jadi cicit kanan dst
  • 43. Pembentukan Tree dari Preorder • Baca hasil Preorder dari paling kanan ke kiri untuk mencari node yang derajatnya lebih dari 0, kemudian ambil node sebanyak derajatnya ke kanan. Hilangkan node yang terambil tersebut dari hasil Preorder • Lanjutkan langkah 1, dan seterusnya sampai semua hasil traversal habis
  • 44. Contoh • Preorder: U V W X Y • Derajat: 2 2 0 0 0 • Derajat bukan nol yang ditemukan pertama dari kanan adalah V, ambil 2 node kekanan, W dan X, hilangkan. • Lanjutkan, ketemu U berderajat 2, berarti U punya anak V dan Y
  • 45. Soal-soal • Buatlah fungsi untuk menghapus suatu node pada Tree! • Buatlah program lengkap untuk memanipulasi dan mensimulasikan tree dengan berbasis menu!