Leetcode 98. 验证二叉搜索树

137 阅读1分钟

“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”

今天写了二叉树的中序遍历,所以打算把热题100中关于二叉树的题,都解一遍,方便大家专项学习

一、题目描述

  • 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。

二、思路分析

  • 所谓二叉搜索树:左子树小于根,根需要小于右子树
  • 这道题可以用之前的中序遍历
  • 当前节点大于前一个节点,则继续比较
  • 否则不满足条件返回false

三、AC 代码:

class Solution {
    TreeNode pre = null;
    public boolean isValidBST(TreeNode root) {
        //校验为空则真
        if(root == null){
            return true;
        }
        // 访问左子树
        if(!isValidBST(root.left)){
            return false;
        }
        //当前节点小于前一个节点,则返回false
        if(pre != null&&root.val<=pre.val){
            return false;
        }
        pre = root;
        //访问右子树
        return isValidBST(root.right);
    }
}

四、总结:

  • 好了,代码撸完,我们总结一下
    • 运用中序遍历来解题

    • 当前节点小于前一个节点则终止返回false

    • 否则继续递归

最后这个算法是Leetcode的第98题,是热题100里的题,去年我刷了热题100用时一个月左右,接下来我会继续更新,小伙伴可以点赞关注,如果你也在刷热题100的话,希望可以对你有一些启发!