二叉树遍历题解(已知中序,层次遍历,求后序遍历)

题目:

树和二叉树基本上都有先序、中序、后序、按层遍历等遍历顺序,给定中序和其他一种遍历的序列就可以确定一棵二叉树的结构。

假设一棵二叉树一个结点用一个字符描述,现在给出中序和按层遍历的字符串,求该树的先序遍历字符串。

输入:

输入共两行,每行是由字母组成的字符串(一行的每个字符都是唯一的),分别表示二叉树的中序遍历和按层遍历的序列。

输出:

输出就一行,表示二叉树的先序序列。

样例输入:DBEAC

                  ABCDE

样例输出:ABDEC

题解:

本题不需要建树。

做题前先弄明白中序遍历和层次遍历的特点;

首先中序遍历的根结点左侧为左子树,右侧为右子树,而先序遍历优先输出根结点,再遍历左子树,最后遍历右子树,因此,不难想到,先在中序遍历中找到根结点,再先后递归左右子树;

然后,我们单开一个数组从1到结尾给层次遍历的结果做标记,方便在递归中找到根结点(即使递归到了子树也可行)。见代码:

#include
#include
int len,mark[102];                                                             //用来给中序遍历做标记
char s1[102],s2[102];                                                    //储存遍历
void tree(int l,int r){                                                          //递归函数
    if(l>r)return;                                                               //返回条件,不能等于
    int i,j,min=0x7fffff/*int范围的最大值*/,root;
    for(i=l;i<=r;i++){
        if(mark[s1[i]]

 
  

欢迎指点





你可能感兴趣的:(二叉树遍历题解(已知中序,层次遍历,求后序遍历))