/*二叉搜索树 根节点大于左节点 小于右节点 思路:递归思想 后续遍历的最后一个节点 一定是根节点 从数组开始找到第一个大于根节点的数组元素 从开始到该元素前一个点都为左子树 从该元素 到数组倒数第二个元素 为右子树 如果右子树节点值 小于根节点 返回 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); } }