首页 > 代码库 > 判断序列是否是二叉树的后序遍历序列
判断序列是否是二叉树的后序遍历序列
这个题的意思就是给定一个序列,判断这个序列是否是某个二叉排序树的后序遍历序列,这个算法的方法主要是根据后序遍历的性质,首先这个序列的最后一个元素肯定是根元素,然后将序列从左往右遍历,找到第一个大于根元素的点,这个点左边的肯定是当前根的左子树,这个点的右边肯定是当前根的右子树,继续向后遍历,看右子树中是否有值小于根,如果有,则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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。