105. 从前序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。例如,给出
1
2
3 > 前序遍历 preorder = [3,9,20,15,7]
> 中序遍历 inorder = [9,3,15,20,7]
>
返回如下的二叉树:
1
2
3
4
5
6 > 3
> / \
> 9 20
> / \
> 15 7
>
思路: 重建二叉树的基本思路就是先构造根节点,再构造左子树,接下来构造右子树,其中,构造左子树和右子树是一个子问题,递归处理即可。
因此我们只关心如何构造根节点,以及如何递归构造左子树和右子树。
我们可以利用前序遍历和中序遍历的特性来区分出左右子树的元素,然后递归构造.
PS: 对于区间分治的问题,最好是使用 左闭右闭区间更加方便 .
1 | class Solution { |