二叉树的序遍历


题目描述

求一棵二叉树的前序遍历,中序遍历和后序遍历。

输入输出格式

输入描述:

第一行一个整数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中实现的二叉树结构

【非递归】二叉树的建立及遍历

二叉树递归实现与二重指针

二叉树先序中序非递归算法

轻松搞定面试中的二叉树题目

本文永久更新链接地址

相关内容