#define NULL 0
#include "stdio.h"
#include "stdlib.h"
//二叉链表结点定义
typedef struct tree
{ int data;
struct tree *lchild;
struct tree *rchild;
}*TREE;// 先序建立二叉树
struct tree *create(struct tree *BT,int k)
{ struct tree *p;
int x;
p=(struct tree *)malloc(sizeof(struct tree));
scanf("%d",&x);
if(x!=0)
{
if(!(p=(struct tree *)malloc(sizeof(struct tree))))
exit(0); //生成主根或子树根
p->data=x;
p->lchild=NULL;
p->rchild=NULL;
if(k==0)
BT=p;
if(k==1)
BT->lchild=p;
if(k==2)
BT->rchild=p;
create(p,1);//搜索建立左子树
create(p,2);//建立右子树
}
return(BT);
}// 先序遍历
int visit(struct tree *BT)
{ if(BT!=NULL)
{
printf("%d ",BT->data);
visit(BT->lchild);
visit(BT->rchild);
}
return 0;
}
void postorder(TREE ptr)
{
if(ptr)
{
postorder(ptr->lchild);
postorder(ptr->rchild);
printf("%d ",ptr->data);
}
}
void main()
{
struct tree *pp;
pp=(struct tree *)malloc(sizeof(struct tree));
pp=create(pp,0);
visit(pp);
printf("\n");
postorder(pp);
printf("\n");
system("pause");
}
二叉树的构造以及,前序遍历和后序遍历的实现。
Creat Binary Tree and by means of Postorder and Preorder through the Tree
最新推荐文章于 2020-08-28 15:43:16 发布