题目链接
英文链接:https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
中文链接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
题目详述
根据一棵树的前序遍历与中序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。
例如,给出
1 | 前序遍历 preorder = [3,9,20,15,7] |
返回如下的二叉树:
1 | 3 |
题目详解
- 前序遍历方式为根左右。
- 中序遍历方式为左根右。
- 前序遍历的第一个结点为根结点,可以在中序遍历中确定根结点的位置,进而得到它的左子树和右子树。
- 递归进行构建即可。
1 | public class LeetCode_00105 { |
上面的做法的时间复杂度为 O(n^2)。可以把中序结点的下标信息缓存起来,时间复杂度可以降为 O(n)。
1 | public class LeetCode_00105 { |