#include
#include
#include
#define P printf
#define S scanf
#define F fflush(stdin)
struct data{
char nama;
int umur;
int level;
struct data *left,*right;
}*root=NULL,*curr;
void push(struct data **p,char nama[16],int umur,int level=1){
if(*p==NULL){
(*p)=(struct data*)malloc(sizeof(struct data));
strcpy((*p)->nama,nama);
(*p)->umur=umur;
(*p)->level=level;
(*p)->left=NULL;
(*p)->right=NULL;
}else{
if(strcmp(nama,(*p)->nama)left,nama,umur,level);
}else if(strcmp(nama,(*p)->nama)>0){
push(&(*p)->right,nama,level);
}else{
P("\nNama sudah ada");
}
}
}
void inorder(struct data *p){
if(p==NULL){
return;
}else{
inorder(p->left);
P("\n%d %-20s % %d",p->level,p->nama,p->umur);
inorder(p->right);
}
}
void preorder(struct data *p){
if(p==NULL){
return;
}else{
P("\n%d %-20s % %d",p->level,p->nama,p->umur);
preorder(p->left);
preorder(p->left);
}
}
void postorder(struct data *p){
if(p==NULL){
return;
}else{
postorder(p->left);
postorder(p->right);
P("\n%d %-20s % %d",p->level,p->nama,p->umur);
}
}
void pop(struct data *p){
if(root==NULL){
P("\n data tidak ada");
return;
}else if(p==NULL){
P("{\n Nama tidak ada");
return;
}else{
pop(p->left);
pop(p->right);
free(p);
}
}
void popAll(struct data *p){
if(p==NULL){
return;
}else{
popAll(p->left);
popAll(p->right);
free(p);
root=NULL;
}
}
void search(struct data **p,char nama[16]){
if((*p)==NULL){
return;
}else{
if(strcmp(nama,(*p)->nama)left,nama);
}else if(strcmp(nama,(*p)->nama)>0){
search(&(*p)->right,nama);
}else{
pop(*p);
(*p)=NULL;
P("\nNama has been deleted");
}
}
}
void searching(struct data *p,char nama[16]){
if(p==NULL){
return;
}else{
if(strcmp(nama,p->nama)left,nama);
}else if(strcmp(nama,p->nama)>0){
searching(p->right,nama);
}else{
P("\n%d %-20s %d",p->level,p->nama,p->umur);
}
}
}
void menu(){
for(int i=0;i