zoukankan      html  css  js  c++  java
  • LeetCode Construct Binary Tree from Inorder and Postorder Traversal

    class Solution {
    public:
        TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) {
            int ilen = inorder.size();
            int plen = postorder.size();
    
            if (ilen == 0 || plen == 0) return NULL;
            return dfs(inorder, postorder, 0, ilen, plen - 1, -1);
        }
    
        TreeNode* dfs(vector<int> &inorder, vector<int> &postorder, int is, int ie, int ps, int pe) {
            
            if (is >= ie || ps <= pe) return NULL;
            int rval = postorder[ps];
            int iroot= is;
    
            while (iroot != ie && inorder[iroot] != rval) iroot++;
    
            int left_len = iroot - is;
            
            TreeNode* nroot = new TreeNode(rval);
    
            nroot->left = dfs(inorder, postorder, is, iroot, pe + left_len, pe);
            nroot->right= dfs(inorder, postorder, iroot + 1, ie, ps - 1, pe + left_len);
    
            return nroot;
        }
    };
  • 相关阅读:
    png 的特点
    UIImangeView的用法
    uiTextView简单的用法
    UITextField简单的用法
    UIWindow的简单实用(二)
    UIView的简单实用
    objective-C 复合(组合)
    OC
    objective-C protocol协议
    object-C NSDate
  • 原文地址:https://www.cnblogs.com/lailailai/p/3845349.html
Copyright © 2011-2022 走看看