您的当前位置:首页正文

Pta 7-1 二叉树的遍历(简单)

来源:九壹网

二叉树作为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

 

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top