描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜素树)
示例1
输入:
[4,8,6,12,16,14,10]
复制返回值:
true
public class Jz23_VerifySquenceOfBST {
public boolean VerifySquenceOfBST(int[] sequence) {
if (sequence.length == 0) {
return false;
}
return judge(sequence, 0, sequence.length - 1);
}
public boolean judge(int[] arr, int l, int r) {
if (l < 0 || l >= r) {
return true;
}
int mid = -1;
for (int i = l; i < r; i++) {
if (mid == -1 && arr[i] > arr[r]) {
mid = i;
}
if (mid != -1 && arr[i] < arr[r]) {
return false;
}
}
return judge(arr, l, mid - 1) && judge(arr, mid, r - 1);
}
}