【力扣hot100题】(046)从前序与中序遍历序列构造二叉树

【力扣hot100题】(046)从前序与中序遍历序列构造二叉树_第1张图片

感觉自己二叉树的题目不用递归已经不会做了……

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    TreeNode* buildTree(vector& preorder, vector& inorder) {
        if(preorder.size()==0||inorder.size()==0) return nullptr;
        int i=0;
        for(i;i l(inorder.begin(),inorder.begin()+i);
        vector r(inorder.begin()+i+1,inorder.end());
        TreeNode* result=new TreeNode(preorder[0]);
        preorder.erase(preorder.begin());
        result->left=buildTree(preorder,l);
        result->right=buildTree(preorder,r);
        return result;
    }
};

但是递归好占空间(好吧看了答案发现迭代也是一样)

你可能感兴趣的:(leetcode,算法,数据结构)