题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if (sequence == null || sequence.length == 0) return false;
if (sequence.length == 1) return true;
return helper(sequence, 0, sequence.length - 1);
}
public boolean helper(int[] seq, int start, int end) {
if (start >= end) return true;
int root = seq[end];
int mid = 0;
int i = end - 1;
for (; i >= 0; i--) {
if (seq[i] < root) break;
}
mid = i;
for (i = mid; i >= 0; i--) {
if (seq[i] > root) {
return false;
}
}
return helper(seq, start, mid) && helper(seq, mid + 1, end - 1);
}
}
312

被折叠的 条评论
为什么被折叠?



