Advertisement

玩转二叉树(7-11)

阅读量:

7-11 玩转二叉树

已知一棵二叉树的中序遍历与前序遍历序列,要求首先对整棵树进行镜像翻转处理,随后输出翻转后所得的层序遍历结果。所谓镜像翻转,即对于所有非叶子节点而言,将其左右子节点的位置进行交换。本题中所涉及的键值均为互不相同的正整数。
输入格式:

第一行输入一个正整数N(≤30),代表二叉树中节点的数量。第二行输入该树的中序遍历序列。第三行输入其前序遍历序列。各数字之间使用空格分隔。
输出格式:

在一行内输出该树完成镜像翻转后的层序遍历结果。数字之间用一个空格分隔,且行首与行尾不得出现多余空格。
输入样例:

7
1 2 3 4 5 6 7
4 1 3 2 6 5 7

输出样例:

4 6 1 7 5 3 2
思路:在此过程中采用的是二叉树的顺序存储方式。根据前序与中序遍历所给出的信息,首先构建根节点。接着在中序序列中定位到根节点的具体位置,并利用二分法的思想递归地构建整棵二叉树。

复制代码
    #include <bits/stdc++.h>
    using namespace std;
    int N,in[50],pre[50],t=1;
    typedef struct 
    { int w;
      int left;
      int right;
    }TNode; //二叉树

全部评论 (0)

还没有任何评论哟~