二叉搜索树的后序遍历序列

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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 }
原文地址:https://www.cnblogs.com/haq123/p/12189954.html