Jumat, 04 April 2014

TREE

TREE di bagi menjadi banyak jenis tetapi saya kali ini saya ajan membahas binary tree dan binary search tree, yang membedakan antara keduanya adalah kalau binary tree posisi penempatannya bebas sedangkan binary search tree punya beberapa peraturan sendiri.

Binary search tree yang saya pelajari mempunyai peraturan sebagai berikut  :

->Binary search tree punya minimal left dan right, tetapi bisa juga di tammbah parent & child(akan saya jelaskan lebih lanjut di kesempatan lainya).


struct MLM{
char nama[25];
int usia;
int level;
struct MLM *left, *right, *parent;
}*root;


-> Binary search tree mempunyai peraturan bahwa sebelah LEFT dari CURR nilainya lebih kecil sedangkan RIGHT nilainnya harus lebih besar dari curr


void push(struct MLM **curr, char nama[], int usia, int level){
if(*curr == NULL){
(*curr) = (struct MLM*)malloc(sizeof(struct MLM));
// Presendence (kurung)
strcpy((*curr)->nama, nama);
(*curr)->usia = usia;
(*curr)->level = level;
(*curr)->left = (*curr)->right = NULL;
}else{
if(usia < (*curr)->usia){
if(*curr != NULL){
(*curr)->left->parent = (*curr);
}
push(&(*curr)->left,nama,usia,level+1);
}else if(usia > (*curr)->usia){
if((*curr) != NULL){
(*curr)->right->parent = (*curr);
}
push(&(*curr)->right,nama,usia,level+1);
}else{
printf("Angka %d sudah ada\n",usia);
}
}
}

->Lalu penampilan printnya bisa di gunakan postfix, infix atau prefix


void preorder(struct MLM *curr){
if(curr == NULL){
//printf("Maaf, kosong.. coba lagi besok.\n");
//getchar();
}else{
printf("%s %d %d\n",curr->nama, curr->usia, curr->level);
preorder(curr->left);
preorder(curr->right);
}
}

void inorder(struct MLM *curr){
if(curr == NULL){
//printf("Maaf, kosong.. coba lagi besok.\n");
//getchar();
}else{
inorder(curr->left);
printf("%s %d %d\n",curr->nama, curr->usia, curr->level);
inorder(curr->right);
}
}

void postorder(struct MLM *curr){
if(curr == NULL){
//printf("Maaf, kosong.. coba lagi besok.\n");
//getchar();
}else{
postorder(curr->left);
postorder(curr->right);
printf("%s %d %d\n",curr->nama, curr->usia, curr->level);
}
}

inilah yang saya pelajari dari pertemuan hari ini terima kasih