二叉树作为FDS课程最核心的数据结构之一,要求每个人都掌握!
这是一道简单的二叉树问题!
我们将给出一颗二叉树,请你输出它的三种遍历,分别是先序遍历,中序遍历,后序遍历!
输入格式:
二叉树将以这样的形式给出:
第一行给出一个正整数N(N<=100),表示二叉树上的节点个数!
接下来N行,每行包含三个整数,i,l,r,分别代表第i个节点的左右孩子!
如果它的左/右孩子为空,则在对应位置给出-1!
题目保证1是根节点!
输出格式:
请你输出它的三种遍历!
第一行输出先序遍历,第二行输出中序遍历,第三行输出后序遍历!
每行末尾无多余空格!
输入样例:
在这里给出一组输入。例如:
3
1 2 3
2 -1 -1
3 -1 -1
输出样例:
在这里给出相应的输出。例如:
1 2 3
2 1 3
2 3 1
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
#include <string.h>
int L[111], R[111];
void preorder(int node)
{
printf("%d ", node);
if (L[node] != -1)
preorder(L[node]);
if (R[node] != -1)
preorder(R[node]);
}
void inorder(int node)
{
if (L[node] != -1)
inorder(L[node]);
printf("%d ", node);
if (R[node] != -1)
inorder(R[node]);
}
void suforder(int node)
{
if (L[node] != -1)
suforder(L[node]);
if (R[node] != -1)
suforder(R[node]);
printf("%d ", node);
}
int main()
{
int n, j, l, r;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%d%d%d", &j, &l, &r);
L[j] = l;
R[j] = r;
}
preorder(1);
putchar('\n');
inorder(1);
putchar('\n');
suforder(1);
putchar('\n');
return 0;
}
输入样例:
3
1 2 3
2 -1 -1
3 -1 -1
输出样例:
1 2 3
2 1 3
2 3 1
标签:node,输出,遍历,int,样例,二叉树,简单 From: https://blog.csdn.net/2401_85947543/article/details/143351463