题目:建立二叉排序树,输出其先序遍历,中序遍历,后序遍历
样例输出:
样例输出:
实现代码:
#include <stdio.h>
struct Node{
Node *lchild;
Node *rchild;
int x;
}Tree[100];
int loc;
Node *Create(){
Tree[loc].lchild=Tree[loc].rchild=NULL;
return &Tree[loc++];
}
void PreOrder(Node *N){
if(N!=NULL){
printf("%d ",N->x);
PreOrder(N->lchild);
PreOrder(N->rchild);
}
}
void MidOrder(Node *N){
if(N!=NULL){
MidOrder(N->lchild);
printf("%d ",N->x);
MidOrder(N->rchild);
}
}
void PostOrder(Node *N){
if(N!=NULL){
PostOrder(N->lchild);
PostOrder(N->rchild);
printf("%d ",N->x);
}
}
Node *InsertN(Node *&N,int x1){
if(N==NULL){
N=Create();
N->x=x1;
return N;
}
else if(N->x>x1){
InsertN(N->lchild,x1);
}
else{
InsertN(N->rchild,x1);
}
return N;
}
int main(int argc, char *argv[])
{
int n;
while(scanf("%d",&n)!=EOF){
loc=0;
Node *T=NULL;
for(int i=0;i<n;i++){
int x;
scanf("%d",&x);
T=InsertN(T,x);
}
printf("\n");
PreOrder(T);
printf("\n");
MidOrder(T);
printf("\n");
PostOrder(T);
printf("\n");
}
return 0;
}
测试输出: