您的位置:首页 > 其它

每天一个算法之是否为后续遍历序列

2016-11-04 14:46 323 查看
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class backPrint {
static Scanner sc=new Scanner(System.in);
static Queue<BinaryTree> queue=new LinkedList<BinaryTree>();
public static void main(String args[]){
int[] a={5,6,7,9,11,10,8};
System.out.println(isback(a,0,a.length-1));
}
//后序遍历序列的最后一个是根,根左子树都小于根,右子树都大于根。如果不满足这个条件必然不是后续遍历。然后递归判断左子树和右子树的数据。
public static boolean isback(int[] seq,int start,int end){
int lenght=end-start;
if(lenght==0)
return false;
int root=seq[lenght];
int i=start;
for(;i<lenght-1;i++){
if(seq[i]>root)break;
}
int j=i;
for(;j<lenght-1;j++){
if(seq[j]<root)return false;
}
boolean left=true;
if(i-1>start){
left=isback(seq,start,i-1);
}
boolean right=true;
if(i<end-1){
left=isback(seq,i,end-1);
}
return left&&right;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐