PTA 天梯赛练习 7-11 玩转二叉树
由树的先序和中序遍历序列建立一个二叉树,做镜面反转后层次输出
题目连接
7-11 玩转二叉树(25 分)
给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。
输入格式:
输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。
输出格式:
在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。
输入样例:
7
1 2 3 4 5 6 7
4 1 3 2 6 5 7
输出样例:
4 6 1 7 5 3 2
解题思路
1.树的建立,遍历以及其他操作普遍用到递归的方法(树的定义就是递归定义的,所以性质决定方法)
2.层次遍历显然用广搜
3.前中序建立则从前向后【由前序序列从前向后确定树的每个节点】(先左子树后右子树)
4.中后序建立则从后向前【由后序序列从后向前确定树的每个节点】(先右子树后左子树)
注:由后序序列和中序序列建立方法见上一篇博客。
5.最重要的有两点:一是左右子树的长度ÿ