题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
return Verification(0,sequence.length-1,sequence);
}
private boolean Verification(int start,int end,int[] array){
if(array.length == 0)
return false;
if( start >= end ) return true;
int i;
for(i = start; i < end; i++){
if(array[i] > array[end])
break;
}
for (;i < end; i++){
if(array[i] < array[end])
return false;
}
return Verification(start,end-1,array);
}
}
对于二叉排序树的后序遍历,去掉最后一个元素之后,前面的数字还可以分为左右两段。前面一段比最后一位小,后面一段比最后一段大。
代码写得好像有问题…..