输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
1 public class Solution { 2 public boolean VerifySquenceOfBST(int [] sequence) { 3 if(sequence.length==0) 4 return false; 5 if(sequence.length==1) 6 return true; 7 return ju(sequence, 0, sequence.length-1); 8 9 } 10 11 public boolean ju(int[] a,int star,int root){ 12 if(star>=root) 13 return true; 14 int i = root; 15 //从后面开始找 16 while(i>star&&a[i-1]>a[root]) 17 i--;//找到比根小的坐标 18 //从前面开始找 star到i-1应该比根小 19 for(int j = star;j<i-1;j++) 20 if(a[j]>a[root]) 21 return false;; 22 return ju(a,star,i-1)&&ju(a, i, root-1); 23 } 24 }