package targetOffer;
public class BST_24 {
boolean verifyBST(int a[],int start,int end)
{
if(a==null||start>=end)
{
return false;
}
int root=a[end-1];
int i=start; //不能写成i=0;
for(;i<end-1;++i)
{
if(a[i]>root)
break;
}
int j=i;
for(;j<end-1;++j)
{
if(a[j]<root)
return false;
}
boolean left=true;
if(i>start)//注意不要写成i>0
{
left=verifyBST(a,start,i);
//System.out.println(start+"-L-"+i+":"+left);
}
boolean right=true;
if(i<end-1)
{
right=verifyBST(a,i,end-1);
//System.out.println(i+"-R-"+(end-1)+":"+right);
}
return (left&&right);
}
void test()
{
int a[]={5,7,6,9,11,10,8};
int b[]={7,4,6,5};
boolean result1=verifyBST(a,0,a.length);
boolean result2=verifyBST(b,0,b.length);
boolean result3=verifyBST(a,0,3);
boolean result4=verifyBST(a,3,6);
System.out.println(result1);
System.out.println(result3);
System.out.println(result4);
System.out.println(result2);
}
public static void main(String args[])
{
new BST_24().test();
}
}
结果:
true
truetrue
false