输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思路:二叉搜索树即左子树<根<右子树,若满足该条件即为二叉搜索树。通过寻找左子树和右子树范围来进行递归调用,最终返回结果。
代码:
1 public class Solution { 2 public boolean VerifySquenceOfBST(int [] sequence) { 3 if(sequence.length==0) 4 return false; 5 return isBST(sequence,0,sequence.length-1); 6 } 7 8 /*给出二叉树的范围判断是否为二叉搜索树*/ 9 public boolean isBST(int[] sequence,int start,int end){ 10 if(end<=start) 11 return true; 12 int i = start; 13 for(;i<end;i++){ 14 if(sequence[i]>sequence[end]) 15 break; 16 } 17 18 for(int j=i;j<end;j++){ 19 if(sequence[j]<sequence[end]) 20 return false; 21 } 22 return isBST(sequence,start,i-1)&&isBST(sequence,i,end-1); 23 } 24 }