码迷,mamicode.com
首页 > 其他好文 > 详细

判断序列是否是二叉树的后序遍历序列

时间:2014-06-26 00:18:44      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   tar   color   

  这个题的意思就是给定一个序列,判断这个序列是否是某个二叉排序树的后序遍历序列,这个算法的方法主要是根据后序遍历的性质,首先这个序列的最后一个元素肯定是根元素,然后将序列从左往右遍历,找到第一个大于根元素的点,这个点左边的肯定是当前根的左子树,这个点的右边肯定是当前根的右子树,继续向后遍历,看右子树中是否有值小于根,如果有,则false,否则分左右子树分别再次调用函数进行判断。具体代码如下:

 1 public class IsLastOrder{
 2 
 3     public boolean islast(int [] array,int start,int end){
 4         boolean left = true;
 5         boolean right = true;
 6         if(start>end){
 7             return false;
 8         }
 9         if(start==end){
10             return true;
11         }
12 
13         int root = array[end];
14         int index = -1;
15         for(int i=start;i<end;i++){
16             if(array[i]>root){
17                 index = i;
18                 break;
19             }
20         }
21         for(int i=index;i<end;i++){
22             if(array[i]<root){
23                 return false;
24             }
25         }
26         if(index>0){
27             left = islast(array,start,index-1);
28         }
29         if(index<end-1){
30             right = islast(array,index,end-1);
31         }
32         return left&&right;
33     }
34 
35     public static void main(String [] args){
36         int [] array = {7,4,6,5};
37         IsLastOrder ilo = new IsLastOrder();
38         System.out.println(ilo.islast(array,0,3));
39     }
40 }

 

判断序列是否是二叉树的后序遍历序列,布布扣,bubuko.com

判断序列是否是二叉树的后序遍历序列

标签:style   class   blog   code   tar   color   

原文地址:http://www.cnblogs.com/cjmlovelulu/p/3804283.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!