zoukankan      html  css  js  c++  java
  • 23二叉搜索树的后序遍历序列

    题目描述

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
     

     思路:
    在后序遍历得到的序列中,最后一个元素是根节点。数组中前面的元素可以分分2部分,左部分是比根节点小的,是左子树,
    右部分是比根节点大的, 是右子树。

    public class Solution {
        public boolean VerifySquenceOfBST(int [] sequence) {
            if(sequence.length==0) return false;
            if(sequence.length==1) return true;
            return ju(sequence, 0, sequence.length-1);
        }
        public boolean ju (int [] a,int start,int root){
            if(start>root) return true;
            int i = root;
            while(i>start &&a[i-1]>a[root]){
                i--;
            }
            for(int j= start;j < i-1;j++){
                if(a[j]>a[root])
                    return false;
            }
            return ju(a,start,i-1)&& ju(a,i,root-1);
            }
    }
     1 public class Solution {
     2     public boolean VerifySquenceOfBST(int [] sequence) {
     3         if(sequence.length==0) return false;
     4         if(sequence.length==1) return true;
     5         return judge(sequence, 0, sequence.length-1);
     6     }
     7     public boolean judge(int [] a,int start,int end){
     8         if(start>end) return true;//全都遍历完了,说明没有剩下的元素,说明符合条件
     9         int root = a[end];
    10         int mid = start;
    11         //找到右部分的头
    12         while(a[mid]<root)
    13             mid++;
    14         //判断右部分是否有不满足条件的
    15         for(int j= mid;j <end-1;j++)
    16             if(a[j]<root)   return false;
    17         return judge(a,start,mid-1)&& judge(a,mid,end-1);
    18         }
    19 }
  • 相关阅读:
    Asp.net获取客户端的IP地址排除::1
    EF 筛选列包含NULL会报错
    layUI关于table编辑列支持方向键功能
    .NET CORE 发布IIS问题收集
    VS2019最新源代码管理工具+附下载地址
    关于Mysql可视化工具Navicat Premium12激活使用【亲测】
    经典SQL 语句
    事务的四种隔离级别 [转载]
    HTML 特殊符号编码对照表
    github本地文件Push到仓库
  • 原文地址:https://www.cnblogs.com/zle1992/p/7828597.html
Copyright © 2011-2022 走看看