#include<stdio.h>
int a[20],n;
//创建二叉树
void creat(int b)
{
int i;
for(i=1;i<=b;i++)
a[i]=i;
}
//先序遍历
void xianxu(int a)
{
if(a<=n)
{
printf("%d ",a);//三种遍历都是采用的递归的思想。
xianxu(2*a);//当根节点输出之后,就找出根节点所连接的左子树,递归调用寻找左子树并输出
xianxu(2*a+1);//当左子树找完之后就往回走,寻找右子树并输出
}//下面的都依次同理
}
//中序遍历
void zhongxu(int a)
{
if(a<=n)
{
zhongxu(2*a);
printf("%d ",a);
zhongxu(2*a+1);
}
}
//后序遍历
void houxu(int a)
{
if(a<=n)
{
houxu(2*a);
houxu(2*a+1);
printf("%d ",a);
}
}
int main()
{
int i,j,sum;
while(1)
{
printf("输入1:创建二叉树\n");
printf("输入2:输出二叉树的先序遍历\n");
printf("输入3:输出二叉树的中序遍历\n");
printf("输入4:输出二叉树的后序遍历\n");
scanf("%d",&sum);
switch(sum)
{
case 1:
printf("请输入要创建的二叉树的结点数\n");
scanf("%d",&n);
creat(n);
break;
case 2:
xianxu(1);
printf("\n");
break;
case 3:
zhongxu(1);
printf("\n");
break;
case 4:
houxu(1);
printf("\n");
break;
}
}
return 0;
}
用顺序结构实现对二叉树的三种遍历方式
最新推荐文章于 2023-04-15 19:30:26 发布