//二叉搜索树条件左子树<根<右子树 //后序遍历说明最后一个元素是该二叉树的根节点 //1 找到该树的左子树 //2 判断右子树是否都大于根的值 //3 同样操作,该根的左右子树是否成立 public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence.length==0)
return false;
return juge(sequence,0,sequence.length-1);
}
public boolean juge(int a[],int start,int end){
//说明该二叉搜索树已经完成遍历,没发现错误的,该返回true
if(start>=end)
return true;
int i;
//找到该树大于根节点的位置,也就是找到该树的右子树
for(i=start;i<end;i++)
if(a[i]>a[end])
break;
//判断是否符合右子树都大于根点的点,不,返回false,否则继续判断
for(int j=i;j<end;j++)
if(a[j]<a[end])
return false;
//在同样遍历该根节点的左右子树
return juge(a,0,i-1) && juge(a,i,end-1);
}
}