IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 树-----2.判断是否是二叉搜索树 -> 正文阅读

[数据结构与算法]树-----2.判断是否是二叉搜索树

第19日:验证二叉搜索树

题目链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn08xg/

题目:

给你一个二叉树的根节点root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。

示例 1

img

输入:root = [2,1,3]
输出:true

示例 2

img

输入:root = [5,1,4,null,null,3,6]
输出:false
解释:根节点的值是 5 ,但是右子节点的值是 4 。

提示

树中节点数目范围在[1, 104]
-231 <= Node.val <= 231 - 1
相关标签 树、深度优先搜索、二叉搜索树、二叉树

解题:

  1. 使用中序遍历递归

    大致思路:

    二叉搜索树需要注意的是:结点的左子树的所有结点的值比自己都要小,右子树的所有结点的值比自己都要大

    二叉搜索树的一个特点是,中序遍历的值,是从小到大有顺序的。如下图

    image-20211012162104334

    他的中序遍历结果是:image-20211012162204423

    所以我们使用中序遍历,保存它的上一个结点是谁,再跟目前结点作比对,思路就很清晰了。

    详细代码如下:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode() {}
     *     TreeNode(int val) { this.val = val; }
     *     TreeNode(int val, TreeNode left, TreeNode right) {
     *         this.val = val;
     *         this.left = left;
     *         this.right = right;
     *     }
     * }
     */
    class Solution {
        TreeNode prev=null;
        public boolean isValidBST(TreeNode root) {
            if (root==null) return true;//如果当前结点为空,返回
            
            //如果上一次返回false(不是二叉搜索树)则结束
            if (!isValidBST(root.left)) return false;
            
            //判断中序遍历的上一个结点是否小于本身结点
            if (prev!=null&&prev.val>=root.val) return false;
            prev=root;//保存此次结点
            
            //遍历当前结点的右子树
            if (!isValidBST(root.right)) return false;
            
            return true;
        }
    }
    

    image-20211012161351203

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-14 22:24:23  更:2021-10-14 22:24:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:30:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码