题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
题解
二叉查找树的特点:左子树<根<=右子树 使用分治思想
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if (sequence.length == 0){
return false;
}
return ju(sequence, 0, sequence.length-1);
}
private boolean ju(int[] sequence, int start, int root) {
if (start >= root){
return true;
}
int i = root;
while (i > start && sequence[i - 1] > sequence[root]){
i--;
}
for (int j = start;j < i - 1;j++){
if (sequence[j] > sequence[root]){
return false;
}
}
return ju(sequence,start, - 1) && ju(sequence,i,root - 1);
}
}