//二叉搜索树条件左子树<根<右子树 //后序遍历说明最后一个元素是该二叉树的根节点 //1 找到该树的左子树 //2 判断右子树是否都大于根的值 //3 一样操做,该根的左右子树是否成立 public class Solution {code
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); }
}io