코드

c 이진트리 전,중,후위 알고리즘

by gimmepoint posted Apr 24, 2018
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
라이선스 GPL v2

#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);
}

TAG •