描述:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。
思路:
public class Solution {
public boolean VerifySquenceOfBSTCore(int [] sequence, int start, int end){
if(start >= end){
return true;
}
int root = sequence[end];
int i = start;
while(i < end && sequence[i] < root){
i++;
}
for(int j = i; j < end; j++){
if(sequence[j] < root){
return false;
}
}
return VerifySquenceOfBSTCore(sequence, start, i-1) && VerifySquenceOfBSTCore(sequence, i, end-1);
}
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence.length == 0){
return false;
}
return VerifySquenceOfBSTCore(sequence, 0, sequence.length-1);
}
}