剑指 Offer 07. 重建二叉树
难度中等423
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
例如,给出
1 | 前序遍历 preorder = [3,9,20,15,7] |
返回如下的二叉树:
1 | 3 |
限制:
1 | 0 <= 节点个数 <= 5000 |
注意:本题与主站 105 题重复:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
递归法
每次递归中从前序遍历中选择第一个元素作为根节点,递归地生成左子树和右子树。在前序遍历中要想获取左子树的节点数目和右子树的节点的数目,需要借助中序遍历的根的index计算,计算完成后,即可正确获得左子树的根的位置和右子树的根的位置,从而可以递归的进行生成其左右子树。
递归写法
1 | /** |
1 | /** |
参考文献
1 | 作者:LeetCode-Solution |