Kamis, 31 Mei 2018

PROGRAM BINARY TREE (POHON BINER)

CONTOH PROGRAM BINARY TREE PADA HURUF


#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<iomanip>

using namespace std;

typedef struct tree *pohon;
// Deklarasi dari tree dengan menggunakan linked list
struct tree{
    char info;
    pohon kiri;
    pohon kanan;
};
// Fungsi untuk membuat simpul yang pertama
pohon baru(char hrf)
{
    pohon br;
    br=(pohon)malloc(sizeof(struct tree));
    br->info=hrf;
    br->kiri=NULL;
    br->kanan=NULL;
    return (br);
}

//Fungsi untuk menyisipkan simpul pada tree yang sudah dibangun
void sisip (pohon ph, pohon sp)
{
    pohon P,Q;
    P = ph;
    Q = ph;
    while((sp->info != ph->info)&&(Q!=NULL))
    {
        P = Q;
        if (sp->info < P->info)
        Q = P->kiri;
        else
        Q = P->kanan;
    }
    if(sp->info == P->info)
    cout<<"Sudah ada";
    else
    if(sp->info < P->info)
    P->kiri=sp;
    else
    P->kanan=sp;
}

//Fungsi-fungsi untuk metode traversal secara rekurs
void inorder(pohon ph)
{
    if (ph != NULL)
    {
        inorder(ph->kiri);
        cout<<" "<<ph->info<<" ";
        inorder(ph->kanan);
    }
}

void preorder(pohon ph)
{
    if (ph != NULL)
    {
        cout<<" "<<ph->info<<" ";
        preorder(ph->kiri);
        preorder(ph->kanan);
    }
}

void postorder(pohon ph)
{
    if (ph != NULL)
    {
        postorder(ph->kiri);
        postorder(ph->kanan);
        cout<<" "<<ph->info<<" ";
    }
}

main()
{
    int j=0;char input,jawab[2];
    pohon br, ssp;
    while(1)
    {
        cout<<endl;
        cout<<"Ketikkan huruf :"; scanf("%c",&input);
        fflush(stdin);
        if (j==0) br = baru(input);
        else
        {
            ssp = baru(input);
            sisip(br,ssp);
        }
        cout<<"Ada data lagi(y/t):"; scanf("%s",&jawab);
        fflush(stdin);
        if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0))
        {
            j++;continue;
        }
        else
        if((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0))
        break;
    }
    cout<<endl;
    cout<<"Inorder\t\t : "; inorder(br); cout<<"\n";
    cout<<"Pre-order\t : "; preorder(br); cout<<"\n";
    cout<<"Post-order\t : "; postorder(br); cout<<"\n";
}






HASIL OUTPUT PROGRAM DI ATAS

Screenshoot output program binary tree





ALGORITMA PROGRAM DI ATAS

Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis. Langkah-langkah dalam algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar. Teknik penyajian algoritma dibagi menjadi dua yaitu pseudocode (bentuk tulisan) dan flowchart (bentuk gambar). 

Pseudocode program binary tree
Pseudocode merupakan algoritma yang berbentuk tulisan. Dari pseudocode di atas dapat dibaca yang dimulai dengan start sebagai awal dari suatu program. Lalu menginputkan data dengan mengetik huruf sehingga akan dilanjutkan pilihan "Ada data lagi (y/ t)". Pilihan Ya atau tidak tersebut merupakan jawaban yang akan dieksekusi. Sehingga akan menghasilkan output yang terdiri dari Inorder, Pre-order dan Post-order. Kemudian program akan keluar.


Flowchart program binary tree

Flowchart merupakan salah satu bentuk algoritma yang berupa gambar. Dari flowchart di atas dapat dibaca yang di mulai dari atas yaitu Start. Lalu menginput data dengan mengetikkan huruf. Sehingga akan muncul pilihan "Ada data lagi (ya/tidak)", jika pilih "ya" maka akan kembali penginputan data, pengeksekusian ini akan dilakukan sampai  pengguna memilih "tidak". Maka program akan keluar.





Referensi :

http://arna.lecturer.pens.ac.id/Praktikum_ASD/16%20Tree.pdf

0 komentar:

Posting Komentar

Template by:

Free Blog Templates