不只是访问数组中的某个元素,还要递归调用vector数组,只是数组中的某个位置之前的元素用不到了,需从该位置后开始访问
#include <iostream>
#include <vector>
using namespace std;
class Solution
{
public:
bool is_bst(vector<int> &v,int len);
};
bool Solution::is_bst(vector<int> &v,int len)
{
if(v.empty()||len<=0)
return false;
int root=v[len-1];
//划分二叉搜索树的左子树,找到该序列中第一个大于根节点的结点
int i=0;
for(;i<len;++i)
if(v[i]>root)
break;
//判断二叉搜索树的右子树有没有小于根节点的结点
int j=i;
for(;j<len;++j)
if(v[j]<root)
return false;
bool left=true;
if(i>0)
left=is_bst(v,i);
bool right=true;
if(i<len-1)
right=is_bst(v+i,len-1-i);//这里
return left&&right;
}
int main()
{
vector<int> v{5,7,6,9,11,10,8};
Solution s;
cout<<s.is_bst(v,v.size())<<endl;
return 0;
}