剑指offer面试题33:二叉搜索树的后序遍历序列
2019-01-07 本文已影响0人
灰化肥发黑会挥发
题目:输入一个数组,判断该数组是不是某搜索二叉树的后序遍历结果。
- 解析:该题思路为后序遍历最后一个元素为根元素,搜索二叉树的树根节点比左子树大,比右子树小,所以前N个数字比最后一个节点小,后面的数字比最后一个数字大,如果不符合改规则满足题目条件。
public class VerifySequence {
public boolean VerifySequenceOfBST(int[] sequence,int length){
if(sequence.length==0||length<=0) return false;
int root = sequence[sequence.length-1];
int i = 0;
for(;i<length-1;i++){
if(sequence[i]>root) break;
}
int j = i;
for( ;j<length-1;j++){
if(sequence[j]<root) return false;
}
boolean left = true;
if(i>0) left = VerifySequenceOfBST(sequence,i);
boolean right = true;
if(j<length-1) right = VerifySequenceOfBST(sequence,j);
return left&&right;
}
}