问题描述
根据一棵树的前序遍历与中序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。
Example
输入:前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7]
返回如下的二叉树:
题目链接:105. 从前序与中序遍历序列构造二叉树 (难度:中等)
思路
树的先序遍历顺序为 NLR,中序遍历顺序为 LNR。因此,我们可以采用分治的思想,以先序序列 preorder 中的 preorder[0] 为树的根节点 root,然后通过 root 我们可以中序序列划分为左右两棵子树,分别对左右两棵子树递归处理,即可完成建树,如下图所示

选择根节点,并划分左右子树

处理右子树
代码
1 | class Solution { |
相关练习:1008. 先序遍历构造二叉树 (难度:中等)
相关文章:
- 本文作者: Phoenix
- 本文链接: https://phoenix500526.github.io/2020/06/15/Leetcode-105-从前序与中序遍历序列构造二叉树-分治算法/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!
