二叉树的序遍历
二叉树的序遍历
题目描述
求一棵二叉树的前序遍历,中序遍历和后序遍历。
输入输出格式
输入描述:
第一行一个整数n,表示这棵树的节点个数。
接下来n行每行2个整数L和R。第i行的两个整数Li和Ri代表编号为i的节点的左儿子编号和右儿子编号。
输出描述:
输出一共三行,分别为前序遍历,中序遍历和后序遍历。编号之间用空格隔开。
输入输出样例
输入样例#1:
5
2 3
4 5
0 0
0 0
0 0
输出样例#1:
1 2 4 5 3
4 2 5 1 3
4 5 2 3 1
思路
递归。先写好先序,再将先序略微改动,复制粘贴三遍即可。
代码
复制代码
#include<stdio.h>
int a[100],b[100];
void A(int i)
{
printf("%d ",i);
if(a[i])
A(a[i]);
if(b[i])
A(b[i]);
}
void B(int i)
{
if(a[i])
B(a[i]);
printf("%d ",i);
if(b[i])
B(b[i]);
}
void C(int i)
{
if(a[i])
C(a[i]);
if(b[i])
C(b[i]);
printf("%d ",i);
}
int main()
{
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&a[i],&b[i]);
A(1);
printf("\n");
B(1);
printf("\n");
C(1);
return 0;
}
二叉树的常见问题及其解决程序
【递归】二叉树的先序建立及遍历
在JAVA中实现的二叉树结构
【非递归】二叉树的建立及遍历
二叉树递归实现与二重指针
二叉树先序中序非递归算法
轻松搞定面试中的二叉树题目
本文永久更新链接地址:
评论暂时关闭