题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
剑指offer中的题:
public class Solution {
private boolean verify(int[] sequence, int first, int last) {
if(last-first<=1)
{
return true;
}
int rootValue=sequence[last];
int curIndex;
for(curIndex=first;curIndex<last;curIndex++)
{
if(sequence[curIndex]>rootValue)
{
break;
}
}
int j;
for(j=curIndex;j<last;j++) //验证是否满足右边的全部大于根节点的值这一个条件。
{
if(sequence[j]<rootValue)
{
return false;
}
}
return verify(sequence,first,curIndex-1) && verify(sequence,curIndex,last-1); //再次分别验证左右子数
}
public boolean VerifySquenceOfBST(int [] sequence) {
int n=sequence.length;
if(n==0)
{
return false;
}
return verify(sequence,0,n-1);
}
}