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

  • 相关阅读:
    探索数据
    Python基础15
    Jupyter Notebook 打开方法
    03-目录结构
    02-安装 CentOS7
    12-EndWithEstore
    11-Upload&Download
    10-Listener&Filter
    09-JDBC
    08-MVC&JavaBean
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2839840.html
Copyright © 2011-2022 走看看