二叉树三中遍历代码实现
实现代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode{
int data;
BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void Insert(BiTNode **tree,int val){
BiTNode *temp=NULL;
if(!(*tree)){
temp = (BiTNode *)malloc(sizeof(BiTNode));
temp->lchild = temp->rchild = NULL;
temp->data = val;
*tree = temp;
return;
}
if(val<(*tree)->data){
Insert(&(*tree)->lchild,val);
}else if(val>(*tree)->data){
Insert(&(*tree)->rchild,val);
}
}
void PreOrder(BiTNode *T){
if(T){
printf("%d ",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BiTNode *T){
if(T){
InOrder(T->lchild);
printf("%d ",T->data);
InOrder(T->rchild);
}
}
void PostOrder(BiTNode *T){
if(T){
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%d ",T->data);
}
}
void DeleteTree(BiTNode *tree){
if(tree){
DeleteTree(tree->lchild);
DeleteTree(tree->rchild);
free(tree);
}
}
int main(void){
BiTNode *root;
BiTNode *tmp;
int i,a[7];
root = NULL;
printf("输入7个数:");
for(i=0;i<7;i++){
scanf("%d",&a[i]);
Insert(&root,a[i]);
}
printf("前序遍历:");
PreOrder(root);
printf("\n中序遍历:");
InOrder(root);
printf("\n后序遍历:");
PostOrder(root);
printf("\n");
DeleteTree(root);
}
输出结果:
输入7个数:3 4 5 6 7 8 9
前序遍历:3 4 5 6 7 8 9
中序遍历:3 4 5 6 7 8 9
后序遍历:9 8 7 6 5 4 3
请按任意键继续. . .