먼저 이 진 트 리 를 만 들 고 선 서, 중 서, 후 서 를 옮 겨 다 닙 니 다.

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

좋은 웹페이지 즐겨찾기