力扣106.从中序与后序遍历序列构造二叉树

题目:biubiu
题意:根据中序和后序构造二叉树,力扣105的姐妹题,原理相同。

class Solution {
    
    
public:
    TreeNode* dfs(vector<int>& inorder, vector<int>& postorder,int x,int y,int k,int z){
    
    
         if(k>z||x>y){
    
    
             return NULL;
         }
         if(z<0)
           return NULL;
          TreeNode *root=new TreeNode(postorder[z]);
          root->left=dfs(inorder,postorder,x,mp[postorder[z]]-1, k,z-(y-mp[postorder[z]])-1);
          root->right=dfs(inorder,postorder,mp[postorder[z]]+1,y,z-(y-mp[postorder[z]]),z-1);
          return root;
    }
    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
    
    
        for(int i=0;i<inorder.size();i++){
    
    
            mp[inorder[i]]=i;
        }
        int n=postorder.size()-1;
        return dfs(inorder,postorder,0,n,0,n);
    }
private:
    unordered_map<int,int>mp;
};

Guess you like

Origin blog.csdn.net/qq_43840681/article/details/121590985