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