zoukankan      html  css  js  c++  java
  • 判断序列是否是二叉树的后序遍历序列

      这个题的意思就是给定一个序列,判断这个序列是否是某个二叉排序树的后序遍历序列,这个算法的方法主要是根据后序遍历的性质,首先这个序列的最后一个元素肯定是根元素,然后将序列从左往右遍历,找到第一个大于根元素的点,这个点左边的肯定是当前根的左子树,这个点的右边肯定是当前根的右子树,继续向后遍历,看右子树中是否有值小于根,如果有,则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 }
  • 相关阅读:
    盘符格式转换成NTFS格式
    jdk环境变量配置
    修改mysql密码
    端口占用解决
    程序执行原理
    第一个Python程序
    pip安装第三方库失败的问题
    windows本地安装mongoDB并且安装可视化工具studio 3t
    开发时前端测试方法
    虚拟机配置vimrc
  • 原文地址:https://www.cnblogs.com/cjmlovelulu/p/3804283.html
Copyright © 2011-2022 走看看