题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
package offer;
public class Solution33 {
public boolean VerifySquenceOfBST(int[] sequence) {
if(sequence==null||sequence.length==0)
return false;
if(sequence.length==1)
return true;
return judge(sequence,0,sequence.length-1);
}
public boolean judge(int[] a,int start,int end) {
if(start>=end) // 递归结束条件
return true;
int i=start;
// 左子树的值小于根结点的值
while(a[i]<a[end])
++i;
for(int j=i;j<end;j++) {
if(a[j]<a[end]) // 右子树的值都大于根结点的值
return false;
}
return judge(a,start,i-1)&&judge(a,i,end-1);
}
}