经典二叉树问题,建议搭配前序中序建树一起看,附带链接:105. 从前序与中序遍历序列构造二叉树
题目
根据一棵树的中序遍历与后序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。
例如,给出
中序遍历 inorder = [9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]
返回如下的二叉树:
中序后序唯一确定一棵二叉树
和105题类似,建议先看看105题的解法,下面我会直接给出代码
先看看中序遍历和后序遍历:
中序遍历:左右根
后序遍历:左右根
时间复杂度O(N)
AC代码
其中,在中序遍历找根节点的位置用哈希表优化查询的时间复杂度从O(N)优化到了O(1)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
unordered_map<int,int<