AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

AcWing 46. 二叉搜索树的后序遍历序列    原题链接    简单

作者: 作者的头像   小轩喵灬 ,  2025-01-11 17:51:39 ,  所有人可见 ,  阅读 4


0


class Solution {
    //46. 二叉搜索树的后序遍历序列
    public boolean verifySequenceOfBST(int [] sequence) {
        if (sequence == null || sequence.length == 0) {
            return true;
        }
        return verify(sequence, 0, sequence.length - 1);
    }

    private boolean verify(int[] sequence, int first, int last) {
        if (last - first <= 1) {
            return true;
        }
        //根节点的值
        int rootVal = sequence[last];
        //最左边的节点的下标
        int cutIndex = first;

        //如果 当前节点在区间内,并且值小于根节点,就代表是左子树
        while(cutIndex < last && sequence[cutIndex] <= rootVal) {
            cutIndex++;
        }
        //cutIndex 代表 左子树的结尾
        for(int i = cutIndex +1; i <last; i++) {
            //右子树
            if (sequence[i] < rootVal) {
                return false;
            }
        }

        return verify(sequence, first, cutIndex - 1)
                && verify(sequence, cutIndex, last - 1);
    }
}

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息