1.本题知识点
二叉树,递归
2. 题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
3. 思路
二叉搜索树BST感觉比二叉树要简单,因为它是有规律的,二叉搜索树的左子树都比根节点要小,右子树都比根节点要大。
上述二叉搜索树的后序遍历结果为:5 7 6 9 11 10 8
Java版本:
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
return bst(sequence,0,sequence.length-1);
}
public boolean bst(int [] sequence,int begin,int end)
{
if(sequence == null || sequence.length == 0) return false;
int root = sequence[end];
int i = begin;
for(;i < end ; i++){
if(sequence[i] > root) break;
}
int j = i;
for(; j < end; j++){
if(sequence[j] < root) return false;
}
boolean left = true;
if(i > begin){
left = bst(sequence,begin, i-1);
}
boolean right = true;
if(i < end -1 ){
right = bst(sequence,i, end - 1);
}
return left && right;
}
}