Binary Tree
#include <stdio.h>
#include <conio.h>
typedef struct Node{
int data;
Node *kiri;
Node *kanan;
};
//Menambah data pada tree
void tambah(Node **root,int databaru){
if((*root) == NULL){
//Data baru di declare sebagai node -->akar(root)
Node *baru;
baru = new Node;
baru->data = databaru;
//left and right masih empty set
baru->kiri = NULL;
baru->kanan = NULL;
(*root) = baru;
(*root)->kiri = NULL;
(*root)->kanan = NULL;
printf("Data bertambah!");
}
//Menambah susunan data
//jika data yang ditambah(databaru<akarnya-root-->kiri)
else if(databaru < (*root)->data)
tambah(&(*root)->kiri,databaru);
//Jika data yang ditambah(databaru>akarnya-root-->kanan)
else if(databaru > (*root)->data)
tambah(&(*root)->kanan,databaru);
//Jika data yang ditambah(databaru)==akarnya->data sudah ada)
else if(databaru == (*root)->data)
printf("Data sudah ada!");
}
//Fungsi untuk pre order (Node(data)-->Left-->Right)
void preOrder(Node *root){
//kondisi jika root terisi/tidak boleh kosong
if(root != NULL){
printf("%d ",root->data);
preOrder(root->kiri);
preOrder(root->kanan);
}
}
//Fungsi untuk in order (Left-->Node(data)-->Right)
void inOrder(Node *root){
//kondisi jika root terisi/tidak boleh kosong
if(root != NULL){
inOrder(root->kiri);
printf("%d ",root->data);
inOrder(root->kanan);
}
}
//Fungsi untuk post order (Left-->Right-->Node(data))
void postOrder(Node *root){
//kondisi jika root terisi/tidak boleh kosong
if(root != NULL){
postOrder(root->kiri);
postOrder(root->kanan);
printf("%d ",root->data);
}
}
void main(){
int pil,c;
//deklarasi pohon/tree
Node *pohon,*t;
//set kondisi awal pohon=0
pohon = NULL;
do{
clrscr();
//Menu tampilan awal saja-untuk menjalankan fungsi pilihan
int data;
printf("MENU\n");
printf("1. Tambah\n");
printf("2. Lihat pre-order\n");
printf("3. Lihat in-order\n");
printf("4. Lihat post-order\n");
printf("5. Exit\n");
printf("Pilihan : "); scanf("%d",&pil);
switch(pil){
//Kondisi jika menjalankan fungsi menambah data
case 1: printf("Data baru : ");scanf("%d",
&data);
tambah(&pohon,data);
break;
//Kondisi jika menjalankan fungsi tampilkan data secara preOrder
case 2: if(pohon!=NULL) preOrder(pohon);
else printf("Masih kosong!");
break;
//Kondisi jika menjalankan fungsi tampilkan data secara inOrder
case 3: if(pohon!=NULL) inOrder(pohon);
else printf("Masih kosong!");
break;
//Kondisi jika menjalankan fungsi tampilkan data secara postOrder
case 4: if(pohon!=NULL) postOrder(pohon);
else printf("Masih kosong!");
break;
}
getch();
//Sampai kondisi false berhenti
}while(pil!=5);
}
Contoh Binary Tree
19.13 |
Comments(3)
Langganan:
Postingan (Atom)