Selasa, 07 Juli 2020

PERTEMUAN 15 POHON BINER

Pohon biner

Dalam ilmu komputer, sebuah pohon biner adalah struktur data pohon di mana setiap node memiliki paling banyak dua anak, yang disebut sebagai anak kiri dan anak kanan. Definisi rekursif hanya menggunakan teori himpunan gagasan adalah bahwa (non-kosong) pohon biner adalah tiga (L, S, R), di mana L dan R adalah pohon biner atau himpunan kosong dan S adalah satu set tunggal. Beberapa penulis memungkinkan pohon biner menjadi himpunan kosong juga.
Dari perspektif teori grafik, biner (dan K-ary) pohon seperti yang didefinisikan di sini sebenarnya arborescences. Sebuah pohon biner sehingga dapat juga disebut bifurcating arborescence-istilah yang benar-benar muncul di beberapa buku-buku pemrograman yang sangat tua, sebelum terminologi ilmu komputer modern menang. Hal ini juga memungkinkan untuk menafsirkan sebuah pohon biner sebagai diarahkan, bukan grafik diarahkan, dalam hal pohon biner adalah memerintahkan, berakar pohon. Beberapa penulis menggunakan berakar pohon biner bukan pohon biner untuk menekankan fakta bahwa pohon berakar, tetapi seperti yang didefinisikan di atas, pohon biner selalu berakar. Sebuah pohon biner adalah kasus khusus dari pohon K-ary memerintahkan, di mana k adalah 2.
Dalam komputasi, pohon biner jarang digunakan semata-mata untuk struktur mereka. Jauh lebih khas adalah untuk mendefinisikan fungsi pelabelan pada node, yang menghubungkan beberapa nilai untuk setiap node. Pohon biner berlabel cara ini digunakan untuk mengimplementasikan pohon pencarian biner dan tumpukan biner, dan digunakan untuk pencarian yang efisien dan penyortiran. Penunjukan node non-root sebagai kiri atau kanan anak bahkan ketika hanya ada satu anak hal hadir dalam beberapa aplikasi, khususnya adalah penting dalam pohon pencarian biner. Dalam matematika, apa yang disebut pohon biner dapat bervariasi secara signifikan dari penulis ke penulis. Beberapa menggunakan definisi yang biasa digunakan dalam ilmu komputer, tetapi yang lain mendefinisikannya sebagai setiap non-daun memiliki tepat dua anak dan tidak selalu order (sebagai kiri / kanan) anak-anak baik.

Ada Beberapa Jenis TREE di antaranya :
BINARY TREE
Tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua sub pohon dan kedua subpohon harus terpisah.
Kelebihan struktur Binary Tree :
–          Mudah dalam penyusunan algoritma sorting
–          Searching data relatif cepat
–          Fleksibel dalam penambahan dan penghapusan data
tree binary tree.PNG
FULL BINARY TREE
Semua node, kecuali leaf pasti memiliki 2 anak dan tiap subpohon memiliki panjang path yang sama.
tree -  full binary tree.PNG

COMPLETE BINARY TREE
 Tree yang mirip dengan full binary tree, tapi tiap subtree boleh memiliki panjang path yang berbeda dan tiap node (kecuali leaf) memiliki 2 anak.
tree - complete binary tree

SKEWED BINARY TREE
Binary tree yang semua nodenya (kecuali leaf) hanya memiliki satu anak.

Contoh Pemograman Tree Sederhana di C++
#include<stdio.h>
typedef struct node{
char data;
node *kiri;
node *kanan;
};
node *akar=NULL;
addNode(node **akar, char isi) {
if((*akar)==NULL){
node *baru;
baru= new node;
baru->data = isi;
baru->kiri = NULL;
baru->kanan = NULL;
(*akar)=baru;
}
}
preOrder(node *akar) {
if(akar !=NULL) {
printf(“%c “, akar->data);
preOrder(akar->kiri);
preOrder(akar->kanan);
}
}
inOrder(node *akar) {
if(akar !=NULL) {
inOrder(akar->kiri);
printf(“%c “, akar->data);
inOrder(akar->kanan);
}
}
postOrder(node *akar) {
if(akar !=NULL) {
postOrder(akar->kiri);
postOrder(akar->kanan);
printf(“%c “, akar->data);
}
}

main(){
char abjad;
printf(“\n\n\tPosisi Awal Tree:\n\n”);
printf(“\t       R\n\t      / \\\n\t     A   E\n\t    /\n\t   S\n\t  / \\\n\t I   T\n\n”);
addNode(&akar,abjad=’R’);
addNode(&akar->kiri,abjad=’A’);
addNode(&akar->kanan,abjad=’E’);
addNode(&akar->kiri->kiri,abjad=’S’);
addNode(&akar->kiri->kiri->kiri,abjad=’I’);
addNode(&akar->kiri->kiri->kanan,abjad=’T’);
printf(“Tampilan PreOrder  : “);
preOrder(akar);
printf(“\nTampilan InOrder   : “);
inOrder(akar);
printf(“\nTampilan PostOrder : “);
postOrder(akar);
}

Tidak ada komentar:

Posting Komentar

PERTEMUAN 18 SORTING

SORTING Sorting  adalah proses pengurutan atas sekumpulan data sejenis. Pengurutan dapat dilakukan dari yang terkecil hingga terbesar ( a...