C语言实现二叉树的创建与遍历。其中,二叉树的创建采用先序的创建思想。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree CreateBiTree(){
char data;
BiTree T;
scanf("%c",&data);
if(data=='#'){
return NULL;
}
T = (BiTree)malloc(sizeof(BiTNode));
T->data = data;
T->lchild = CreateBiTree();
T->rchild = CreateBiTree();
return T;
}
//先序遍历二叉树
void PreOrder(BiTree T){
if(T!=NULL){
printf("%c ",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
//中序遍历二叉树
void InOrder(BiTree T){
if(T!=NULL){
InOrder(T->lchild);
printf("%c ",T->data);
InOrder(T->rchild);
}
}
//后序遍历二叉树
void PostOrder(BiTree T){
if(T!=NULL){
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c ",T->data);
}
}
int main()
{
BiTree T;
T = CreateBiTree();
printf("先序遍历的结果为:\n");
PreOrder(T);
printf("\n");
printf("中序遍历的结果为:\n");
InOrder(T);
printf("\n");
printf("后续遍历的结果为:\n");
PostOrder(T);
return 0;
}
运行结果: