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

    struct TreeNode {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    
    class Solution {
    public:
        TreeNode *buildTree(vector<int> &in, int inStart, vector<int> &post, int postStart, int len){
            if (inStart<0 || inStart+len>in.size() || postStart<0 || postStart+len>post.size() || len<1)
                return NULL;
    
            TreeNode *root = new TreeNode(post[postStart+len-1]);//注意这里是postStart+len-1而不是post.size()-1
            int i = 0;
            for (i = 0; i < len; i++)
                if (in[inStart + i] == root->val)
                    break;
    
            int leftLen = i;
            int rightLen = len - 1 - leftLen;
    
            root->left = buildTree(in, inStart, post, postStart, leftLen);
            root->right = buildTree(in, inStart+leftLen+1, post, postStart+leftLen, rightLen);
    
            return root;
        }
    
        TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            if (inorder.size() != postorder.size() || inorder.size()<1)
                return NULL;
    
            return buildTree(inorder, 0, postorder, 0, inorder.size());
        }
    };

    EOF

  • 相关阅读:
    Spring_Bean的配置方式
    Nginx Ingress设置账号密码
    2.2.4 加减运算与溢出
    2.2.5-2 补码乘法
    2.2.3 移位运算
    flask钩子函数
    flask的cookie、session
    循环冗余校验码
    海明校验码
    python中的 __call__()
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2839840.html
Copyright © 2011-2022 走看看