代码:
#include <iostream>
#include <vector>
#include <assert.h>
using namespace std;
bool verifyBst(int data[],int length){
if(data == NULL || length <=0)
return true;
int root = data[length - 1];
int i=0;
//查找左子树节点和长度 左子树小于根节点
for(;i < length -1 ;i++){
if(data[i] > root)
break;
}
//查找右子树节点和长度 右子树大于根节点
int j=i;
for(;j < length-1 ;j ++){
if(data[j] < root )
return false;
}
//判断左子树是否是二叉树
bool left = true;
left = verifyBst(data,i);
bool right = true;
right = verifyBst(data+i,length - i -1);
return left && right ;
}
int main()
{
// int data[]={5,7,6,9,11,10,8};
int data[]={7,4,6,5};
cout<< verifyBst(data,sizeof(data) / sizeof(int));
return 0;
}
运行结果: