/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int pos=0;
struct TreeNode* findSubtree(int start,int end, int *preorder,int max){
if(start==end||preorder[start]>max) return NULL;
struct TreeNode* root=malloc(sizeof(struct TreeNode));
root->val=preorder[start];
//int i=start+1;
// while(i<end&&preorder[i]<root->val)
// i++;
pos++;
root->left=findSubtree(start+1,end,preorder,root->val);
root->right=findSubtree(pos,end,preorder,max);
return root;
}
struct TreeNode* bstFromPreorder(int* preorder, int preorderSize){
pos=0;//为什么一定要在这里初始化pos才不会报错?不能直接初始化全局变量pos么?
return findSubtree(0,preorderSize,preorder,INT_MAX);
}
报错的图例
为什么一定要在 bstFromPreorder 这个函数中初始化pos才不会报错呢
第二个用例就报错了 我在测试用例那一块执行代码却不会有报错RTE
已提交他就显示RTE
感觉很奇怪