输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜素树)
什么是二叉查找树:
根节点的值大于其左子树中任意一个节点的值,小于其右节点中任意一节点的值,这一规则适用于二叉查找树中的每一个节点。(左右中)
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence == null || sequence.length == 0 ) {
return false;
}
return VerifySquenceOfBST(sequence, 0, sequence.length -1);
}
public boolean VerifySquenceOfBST(int [] sequence, int start, int end){
if(start >= end){
return true;
}
int targent = sequence[end];
int left = start;
while(sequence[left] < targent) {
left++;
}
int right = left ;
while(right < end){
if(sequence[right] < targent){
return false;
}
right++;
}
return VerifySquenceOfBST(sequence, start, end - 1) && VerifySquenceOfBST(sequence, right, end - 1);
}
}