从前序和中序遍历构建二叉树

时间:2021-06-23 08:51:26

标签: c++

所以,我为 leetcode 上的给定问题编写了这段代码,以根据给定的前序和中序遍历构造一个二叉树。它在单独测试测试用例时运行良好,但在为我测试的相同输入提交时显示运行时错误。

class Solution {
public:
    int Search(vector<int> arr,int start, int end, int key){
        
        for(int i= start; i<= end; i++){
            if(arr[i]== key)
                return i;
        }
        return -1;
    }
    
    TreeNode* solution(vector<int>& preorder, vector<int>& inorder, int inorderStart, int inorderEnd){
        static int preorderIdx = 0;
        if(inorderStart> inorderEnd)
            return NULL;
        int data= preorder[preorderIdx];
        preorderIdx++;
        TreeNode* node= new TreeNode(data);
        
        if(inorderStart== inorderEnd)
            return node;
        
        int idx= Search(inorder,inorderStart, inorderEnd, data);
        node->left= solution(preorder, inorder, inorderStart, idx-1);
        node->right= solution(preorder, inorder, idx+ 1, inorderEnd);
        
        return node;
    }
    
    TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
        int n= inorder.size(); 
        return solution(preorder, inorder, 0, n-1);
    }
};

0 个答案:

没有答案