/*二叉搜索树 根节点大于左节点 小于右节点
思路:递归思想
后续遍历的最后一个节点 一定是根节点
从数组开始找到第一个大于根节点的数组元素 从开始到该元素前一个点都为左子树
从该元素 到数组倒数第二个元素 为右子树
如果右子树节点值 小于根节点 返回 false
最后分别在左右子树递归
直到数组中只有一个元素 返回true
*/
public class Solution {
boolean flag=false;
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence.length==0) return false;
return subtest(sequence,0,sequence.length);
}
public boolean subtest(int[]subsequence,int start,int end){
if(start>=end)return true;
int i=start;
for(;i<end;i++){ //该循环 寻找左子树的分界点
if(subsequence[i]>subsequence[end-1]) break;
}
for(int j=i;j<end;j++){//遍历右子树 出现节点值小于根节点返回false
if(subsequence[j]<subsequence[end-1]) return false;
}
return subtest(subsequence,start,i-1) && subtest(subsequence,i,end-1);
}
}