Friday, 16 February 2018

Cara Membuat Binary Tree dengan Bahasa C

Pengertian Binary Tree



       Sebuah struktur data yang berbentuk pohon dimana setiap simpul paling banyak memiliki dua anak. Secara khusus, anaknya diberi nama kiri dan kanan. Penggunaan pohon biner secara umum adalah pohon biner terurut, yang lainnya adalah pohon biner.

Binary Tree
Sumber: /www.cs.cmu.edu


(Sumber : www.wikipedia.org)

       Tree adalah sebuah struktur linier, biasanya digunakan untuk menggambarkan hubungan yang bersifat hirarkis antara elemen-elemen yang ada. Ada beberapa istilah dalam tree ini, yang mana masing-masing istilah  mempunyai arti dalam kaitannya dengan hirarki antar elemen dalam tree tersebut, seperti sibling, descendant dsb.

        Dalam ilmu komputer, tree adalah sebuah struktur data yang secara bentuk menyerupai sebuah pohon, yang terdiri dari serangkaian node (simpul) yang saling berhubungan. Node-node tersebut dihubungkan oleh sebuah vektor. Setiap node dapat memiliki 0 atau lebih node anak (child). Sebuah node yang memiliki node anak disebut node induk (parent). Sebuah node anak hanya memiliki satu node induk. Sesuai konvensi ilmu komputer, tree bertumbuh ke bawah, tidak seperti pohon di dunia nyata yang tumbuh ke atas. Dengan demikian node anak akan digambarkan berada di bawah node induknya.Selain itu, pembuatan tree menggunakan linked list sangat efisien bagi pemrosesannya


Source Code untuk Binary Tree


// Nama Program : Bintree
#include <stdlib.h>
#include <stdio.h>
#define info(p) (p)->info
#define left(p) (p)->left
#define right(p) (p)->right
typedef struct treenode *data;
typedef struct treenode{
int info;
data right;
data left;
}node;
data root;

void insert(data *tree, int elem){
//Kamus
data item;
//Algoritma
item = (data) malloc (sizeof(node));
left (item) = right(item) = NULL;
info (item) = elem;
if(!(*tree)){
*tree = item;
return;
}
if(info(item) < info(*tree))
insert(&left(*tree),elem);
else if(info(item) > info(*tree))
insert(&right(*tree), elem);
}

//Buat prosedur inorder, preorder, postorder, main program
void inorder(data *tree){
  if(*tree != NULL){
inorder(&left(*tree));
printf(" %d ", info(*tree));
inorder(&right(*tree));
}
}

void preorder(data *tree){
if(*tree != NULL){
printf(" %d ", info(*tree));
preorder(&left(*tree));
preorder(&right(*tree));
}
}

void postorder(data *tree){
if(*tree != NULL){
postorder(&left(*tree));
postorder(&right(*tree));
printf(" %d ", info(*tree));
}
}

//Program Utama
int main(){
insert (&root,2);
insert (&root,3);
insert (&root,1);
insert (&root,4);
printf("Inorder  : ");
inorder(&root);
printf("\n");
printf("Preorder : ");
preorder(&root);
printf("\n");
printf("Postorder: ");
postorder(&root);
printf("\n");
         getch();
         return 0;
}

Sekian untuk postingan kali ini semoga bermanfaat ya :D.



1 comment: