解题思路-LeetCode第105题:从前序与中序遍历序列构造二叉树
题目描述:
根据一棵树的前序遍历与中序遍历构造二叉树。
注意:你可以假设树中没有重复的元素。
示例:
给出
前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7]
返回如下的二叉树:
3
/ \
9 20
/ \
15 7
解题思路:
对于前序遍历,根节点一定在preorder数组的第一位pStart,左右子树在其右侧(但不知道那些属于左子树或者右子树)。
对于中序遍历,通过前序遍历找到的根节点的值我们通过遍历inorder数组的方式找到根节点,然后我们使用找到的根节点的位置求出左右子树在数组中的长度,从而确定其在preorder数组中的位置,再把左右子树单独拎出来递归创建。
代码如下:
提交后,通过。