zoukankan      html  css  js  c++  java
  • [leetcode]Construct Binary Tree from Preorder and Inorder 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> &pre, int preStart, vector<int> &in, int inStart, int len){
            if (preStart<0 || preStart+len>pre.size() || inStart<0 || inStart+len>in.size() || len<1)
                return NULL;
    
            TreeNode *root = new TreeNode(pre[preStart]);
            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(pre, preStart+1, in, inStart, leftLen);
            root->right = buildTree(pre, preStart+1+leftLen, in, inStart+leftLen+1, rightLen);
    
            return root;
        }
    
        TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            if (preorder.size() != inorder.size() || preorder.size()<1)
                return NULL;
    
            return buildTree(preorder, 0, inorder, 0, inorder.size());
        }
    };

    EOF

  • 相关阅读:
    20191017-1 每周例行报告
    20191010-2 每周例行报告
    20190919-1 每周例行报告
    彭思雨20190919-3效能分析
    zipfile
    subprocess
    configparser
    hashlib
    json & pickle
    headpq
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2839845.html
Copyright © 2011-2022 走看看