题目描述
给出一个二叉树如下图所示:
请由该二叉树生成一个新的二叉树,它满足其树中的每个节点将包含原始树中的左子树和右子树的和。
左子树表示该节点左侧叶子节点为根节点的一颗新树;右子树表示该节点右侧叶子节点为根节点的一颗新树。
输入描述
2行整数,第1行表示二叉树的中序遍历,第2行表示二叉树的前序遍历,以空格分割。
输出描述
1行整数,表示求和树的中序遍历,以空格分割
示例1
输入
-3 12 6 8 9 -10 -7
8 12 -3 6 -10 9 -7
输出
0 3 0 7 0 2 0
说明
解题思路
本题主要考察二叉树的还原:根据中序和前序遍历还原。
请注意:根据中序和前序遍历还原,二叉树可能并不是唯一的,因为如果一个树的节点值不是唯一的,那么可能存在多个有效的二叉树。
在本题中,并没有说明存在多个值的处理方式,我们默认节点值是唯一的,也就是最终会还原出唯一的二叉树。
Java
import java.util.*;
import java.util.stream.*;
public