zoukankan      html  css  js  c++  java
  • 剑指offer(18)二叉搜索树的后续遍历

    题目;

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

    思路:

      以最后一个节点为根,从头往后找到第一个大于根节点的,接下来判断这个位置到根节点前是否都是大于根节点的数,然后在把这两个部分用上述方式处理。

      

    public class Solution {
        public boolean VerifySquenceOfBST(int [] sequence) {
            if(sequence.length==0)
                return false;
            if(sequence.length==1)
                return true;
            return VerifySquenceOfBST(sequence,0,sequence.length-1);
        }
        private boolean VerifySquenceOfBST(int a[],int start,int end){
            if(start==end)
                return true;
            
            int root = a[end];
            int i = start;
            for(;i<end;i++){
                if(a[i]>root)
                    break;
            }
            
            int j = i;
            for(;j<end-1;j++){
                if(a[j]<root)
                    return false;
            }
            
            boolean left=true;
            if(i>0)
                left = VerifySquenceOfBST(a,0,i-1);
            
            boolean right=true;
            if(i<end-1)
                right = VerifySquenceOfBST(a,i,end-1);
            
            return left&&right;
        }
    }
    

      = =下次再加上其他解法

  • 相关阅读:
    springboot启动后执行某些动作
    Virtualbox的nat网络
    xshell6
    day01 K8S
    Nginx的日志文件切割
    virtualbox磁盘空间大小调整
    装修柜子木台面
    mybatis 批量in 多个字段写法
    jenkins shell常用配置
    activiti工作流引擎数据库表结构
  • 原文地址:https://www.cnblogs.com/figsprite/p/10478756.html
Copyright © 2011-2022 走看看