LeetCode/剑指 Offer 07. 重建二叉树
剑指 Offer 07. 重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
例如,给出
1 | 前序遍历 preorder = [3,9,20,15,7] |
返回如下的二叉树:
3
/ \
9 20
/ \
15 7
限制:
1 | 0 <= 节点个数 <= 5000 |
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题解:
本题还是构造二叉树,基本思想就是根据preorder数组确定当前根节点的值,然后在inorder中寻找当前根节点值的位置,其左边为左子树,右边为右子树。这里需要注意的就是preorder递归区间的生成,我们可以依据inorder中根节点的索引来判断,左子树就是[preLeft + 1, preLeft + leftSize],右子树就是[preLeft + leftSize + 1, preRight],最终返回node即可。
具体代码如下:
1 | class Solution { |

