zoukankan      html  css  js  c++  java
  • LeetCode105. Construct Binary Tree from Preorder and Inorder Traversal

    题目 

    根据一棵树的前序遍历与中序遍历构造二叉树。

    注意:
    你可以假设树中没有重复的元素。

    例如,给出

    前序遍历 preorder = [3,9,20,15,7]
    中序遍历 inorder = [9,3,15,20,7]

    返回如下的二叉树:

        3
       / 
      9  20
        /  
       15   7

    Tag


    代码

    0x0017F7D7 处有未经处理的异常(在 test.exe 中): 0xC00000FD: Stack overflow (参数: 0x00000001, 0x01242FBC)。

    我的方法对于大数据的问题会栈溢出。

    class Solution {
    public:
    	TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
    		if (preorder.empty() || inorder.empty())
    			return nullptr;
    		//root    
    		TreeNode* root = new TreeNode(preorder[0]);
    		TreeNode* cur = root;
    		preorder.erase(preorder.begin());
    
    		auto it = inorder.begin();
    		for (; it != inorder.end(); it++)
    		{
    
    			if (root->val == *it)
    			{
    				break;
    			}
    
    		}//在inorder中找到根节点的迭代器
    
    		vector<int> leftin;
    		vector<int> rightin;
    		for (auto item = inorder.begin(); item<it; item++)
    		{
    			leftin.push_back(*item); 
    		}
    		
    		inorder.erase(inorder.begin(),it+1); 
    		rightin = inorder;
    
    		root->left = buildTree(preorder, leftin);
    		root->right = buildTree(preorder, rightin);
    		return root;
    	}
    };

    问题

  • 相关阅读:
    day32-python阶段性复习六
    golang 项目中坑
    golang crawler
    router
    golang in ubuntu
    go channel 案例分析
    go channel learning
    bee go + mgo
    URL escape and unescape
    [转]good sample of Go
  • 原文地址:https://www.cnblogs.com/lightmare/p/10441047.html
Copyright © 2011-2022 走看看