前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天一道剑指offer-二叉搜索树的后序遍历序列

每天一道剑指offer-二叉搜索树的后序遍历序列

作者头像
乔戈里
发布2019-09-17 16:29:19
2720
发布2019-09-17 16:29:19
举报
文章被收录于专栏:Java那些事

前言

今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426 具体的题目可以去牛客网对应专题去找。

昨天的题解

题目

每天一道剑指offer-二叉搜索树的后序遍历序列 来源: https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd?tpId=13&tqId=11176&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目详述

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

题目详解

思路

  • 递归的思想,每次去判断左子树的最右边界是不是大于右子树的最左边界,如果大于就不是,如果小于,那么就再往下递归。

代码

代码语言:javascript
复制
public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence.length == 0)
            return false;
        return verify(sequence,0,sequence.length-1);
    }
    public boolean verify(int [] sequence,int begin,int end)
    {
        if(begin == end)
            return true;
        int rootValue = sequence[end];
        int leftBegin = -1;//左子树的左边界
        int leftEnd = -1;//左子树的右边界
        int rightBegin = -1;//右子树的左边界
        int rightEnd = -1;//右子树的右边界
        if(sequence[begin] < rootValue)// 说明存在左子树,二叉搜索树的性质
            leftBegin = begin;//记录左子树的左边界
        for(int i=begin;i<end;i++)
        {
            if(sequence[i] < rootValue)//如果比根结点的值小,说明就是左子树
                leftEnd = i;//记录下来左子树的右边界,只要比根结点小,就进行记录
            else{
                if(rightBegin == -1) //记录右子树的左边界,这个条件判断只会记录一次。
                    rightBegin = i;
                rightEnd = i;//记录右子树的右边界
            }
        }
        if(rightBegin < leftEnd && rightBegin != -1)
            return false;//如果左子树的右边界 大于 右子树的左边界 就出问题了!false
        return verify(sequence,leftBegin,leftEnd) && verify(sequence,rightBegin,rightEnd);
//否则递归往下去判断
    }
}

代码截图(避免乱码)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员乔戈里 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 昨天的题解
    • 题目
      • 题目详述
        • 题目详解
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档