package com.vic.tree;
/**
* 二叉搜索树的后序遍历
* @author Administrator
*
*/
public class SequenceOfBST{
static boolean verifySquenceOfBST(int[] sequence,int start,int end){
if(null==sequence||(end-start)<=0)
return false;
int root = sequence[end-1];
int i=start;//左子树序列开始
for(;i<end-1;i++){
if(sequence[i]>root)
break;
}
int j = i;//右子树序列开始
for(;j<end-1;j++){
if(sequence[j]<root){
return false;
}
}
//判断左子树序列
boolean left = true;
if(i>start)
left = verifySquenceOfBST(sequence,start,i);
boolean right = true;
//判断右子树序列
if(i<end-1)
right = verifySquenceOfBST(sequence,i,end-1);
return (left&&right);
}
public static void main(String[] args) {
int[] seq = {5,7,6,9,11,10,8};
int[] seq1 = {7,4,6,5};
System.out.println(verifySquenceOfBST(seq, 0, seq.length));
System.out.println(verifySquenceOfBST(seq1, 0, seq1.length));
}
}
二叉搜索树的后序遍历
最新推荐文章于 2018-05-21 16:25:24 发布