思路:
后序遍历为[5,7,6,9,11,10,8]
特点,先找到根节点8,为序列最后一个元素,遍历整个序列中,大于根节点的为右子树,小于根节点的为左子树,所以可以使用递归来对子树进行同样的操作。如果遍历的过程中,先出现了大于根节点的节点,后面又出现了小于根节点的节点,则说明不是二叉搜索树的后序遍历序列。比如[7,4,6,5]这样的序列。
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
int start,end;
start=0;
end=sequence.length;
if(end==0)
return false;
return Verify(sequence,start,end-1);
}
public boolean Verify(int [] sequence,int start,int end){
int i,j;
if(start<end){
for(i=start;i<end;i++){
if(sequence[i]>sequence[end])
break;
}
for(j=i;j<end;j++){
if(sequence[j]<sequence[end])
break;
}
if(j==end)
return Verify(sequence,start,i-1)&&Verify(sequence,i,end-1);
else
return false;
}else{
return true;
}
}
}