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;
}
}
每天一个算法之是否为后续遍历序列
最新推荐文章于 2021-11-20 22:14:55 发布