#include<stdio.h>
#include<stdlib.h>
typedef struct node{
char data;
struct node *l;
struct node *r;
}node;
node *p_A,*p_B,*p_C,*p_D,*p_E,*p_F,*p_G;
void traverse1(node*);
void traverse2(node*);
void traverse3(node*);
void visit(node*);
void end(node*);
void traverse1(node *p_node)
{
if(p_node!=NULL){
visit(p_node);
traverse1(p_node->l);
traverse1(p_node->r);
}
}
void traverse2(node *p_node)
{
if(p_node!=NULL){
traverse2(p_node->l);
visit(p_node);
traverse2(p_node->r);
}
}
void traverse3(node *p_node)
{
if(p_node!=NULL){
traverse3(p_node->l);
traverse3(p_node->r);
visit(p_node);
}
}
void visit(node *c_node)
{
printf("%2c->",c_node->data);
}
void end(node *p_node)
{
if(p_node->l!=NULL)
end(p_node->l);
if(p_node->r!=NULL)
end(p_node->r);
printf("%2c노드 삭제",p_node->data);
free(p_node);
}
int main()
{
p_A=(node*)malloc(sizeof(node));
p_B=(node*)malloc(sizeof(node));
p_C=(node*)malloc(sizeof(node));
p_D=(node*)malloc(sizeof(node));
p_E=(node*)malloc(sizeof(node));
p_F=(node*)malloc(sizeof(node));
p_G=(node*)malloc(sizeof(node));
p_A->data='A';
p_B->data='B';
p_C->data='C';
p_D->data='D';
p_E->data='E';
p_F->data='F';
p_G->data='G';
p_A->l=p_B;
p_A->r=p_C;
p_B->l=p_D;
p_B->r=p_E;
p_C->l=p_F;
p_C->r=p_G;
p_D->l=NULL;
p_D->r=NULL;
p_E->l=NULL;
p_E->r=NULL;
p_F->l=NULL;
p_F->r=NULL;
p_G->l=NULL;
p_G->r=NULL;
traverse1(p_A);
printf("\n");
traverse2(p_A);
printf("\n");
traverse3(p_A);
printf("\n");
end(p_A);
}