먼저 이 진 트 리 를 만 들 고 선 서, 중 서, 후 서 를 옮 겨 다 닙 니 다.
2090 단어 ☆ 데이터 구조
//
void createBiTree(BiTree &T){
int cnt;
scanf("%d",&cnt);
if(cnt == -1){
T = NULL;
return ;
}
T = (BiTNode *)malloc(sizeof(BiTNode));
T->data = cnt;
T->lchild = NULL;
T->rchild = NULL;
createBiTree(T->lchild);
createBiTree(T->rchild);
}
우선 순 서 를 옮 겨 다 니 기:
//
void PreOrder(BiTree T){
if(T==NULL){
return ;
}
visit(T);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
중간 순서 옮 겨 다 니 기:
//
void InOrder(BiTree T){
if(T == NULL){
return ;
}
InOrder(T->lchild);
visit(T);
InOrder(T->rchild);
}
다음 순서 옮 겨 다 니 기:
//
void PostOrder(BiTree T){
if(T==NULL){
return ;
}
PostOrder(T->lchild);
PostOrder(T->rchild);
visit(T);
}
전체 코드:
#include
#include
#include
#define ElemType int
#define MaxSize 100
using namespace std;
//
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//
void createBiTree(BiTree &T){
int cnt;
scanf("%d",&cnt);
if(cnt == -1){
T = NULL;
return ;
}
T = (BiTNode *)malloc(sizeof(BiTNode));
T->data = cnt;
T->lchild = NULL;
T->rchild = NULL;
createBiTree(T->lchild);
createBiTree(T->rchild);
}
//
void visit(BiTree T){
printf("%d",T->data);
}
//
void PreOrder(BiTree T){
if(T==NULL){
return ;
}
visit(T);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
//
void InOrder(BiTree T){
if(T == NULL){
return ;
}
InOrder(T->lchild);
visit(T);
InOrder(T->rchild);
}
//
void PostOrder(BiTree T){
if(T==NULL){
return ;
}
PostOrder(T->lchild);
PostOrder(T->rchild);
visit(T);
}
int main(){
BiTNode *bTree;
createBiTree(bTree);
PreOrder(bTree);
printf("
");
InOrder(bTree);
printf("
");
PostOrder(bTree);
printf("
");
//printf("
");
return 0;
}