当前位置: 首页 > news >正文

【每日力扣】98. 验证二叉搜索树 与 108. 将有序数组转换为二叉搜索树

在这里插入图片描述

🔥 个人主页: 黑洞晓威
😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害

98. 验证二叉搜索树

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

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

  • 节点的左

    子树

    只包含

    小于

    当前节点的数。

  • 节点的右子树只包含 大于 当前节点的数。

  • 所有左子树和右子树自身必须也是二叉搜索树。

image-20240509194705607

解题思路

  1. 利用递归检查每个节点是否在正确的范围内。
  2. 对于左子树,它的值范围为负无穷到根节点值。
  3. 对于右子树,它的值范围为根节点值到正无穷。
  4. 每个节点带有上下界(最小值和最大值),在遍历节点时更新这些上下界。

代码实现

class Solution {public boolean isValidBST(TreeNode root) {return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);}private boolean isValidBST(TreeNode node, long min, long max) {if (node == null) {return true;}if (node.val <= min || node.val >= max) {return false;}return isValidBST(node.left, min, node.val) && isValidBST(node.right, node.val, max);}
}

108. 将有序数组转换为二叉搜索树

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵

平衡二叉搜索树。

解题思路

  1. 找到数组的中间元素作为根节点。
  2. 数组被中间元素分成了左右两部分,分别递归构建左子树和右子树。
  3. 递归的结束条件是左边界大于右边界,此时返回null。

代码实现

class Solution {public TreeNode sortedArrayToBST(int[] nums) {if (nums == null || nums.length == 0) {return null;}return constructBST(nums, 0, nums.length - 1);}private TreeNode constructBST(int[] nums, int left, int right) {if (left > right) {return null;}int mid = left + (right - left) / 2;TreeNode root = new TreeNode(nums[mid]);root.left = constructBST(nums, left, mid - 1);root.right = constructBST(nums, mid + 1, right);return root;}
}
http://www.lryc.cn/news/344836.html

相关文章:

  • Django3 个人开发笔记
  • 【全开源】Java U U跑腿同城跑腿小程序源码快递代取帮买帮送源码小程序+H 5+公众号跑腿系统
  • 物联网实战--平台篇之(五)账户界面
  • 9. Django Admin后台系统
  • ELK+kafka日志采集
  • 【C++ list所有函数举例如何使用】
  • HTML5(1)
  • 【LAMMPS学习】八、基础知识(6.2)LAMMPS GitHub 教程
  • 专业习惯:避开本地语言,使用通用语言
  • 【Leetcode每日一题】 综合练习 - 逆波兰表达式求值(难度⭐⭐)(73)
  • 2G 3G LTE 5G的区别
  • 《21天学通C++》(第二十章)STL映射类(map和multimap)
  • 5月游戏市场迎来新的体验,网易两款游戏重磅出炉
  • 15_Scala面向对象编程_访问权限
  • LeetCode|700. Search in Binary Search Tree
  • MacOS下载安装JDK8
  • macOS 如何使用Visual Studio Code 编译C++
  • SQLite3简单操作
  • 从“制造”到“智造”:“灯塔”经验助力中国制造业转型升级-转载
  • C++ 容器(二)——容器操作
  • 操作系统——进程控制
  • Marin说PCB之国产电源芯片方案 ---STC2620Q
  • 已解决java.lang.StringIndexOutOfBoundsException: 字符串索引越界异常的正确解决方法,亲测有效!!!
  • 关于实体类注解@Data、@EqualsAndHashCode(callSuper = true)、@Accessors(chain = true)的作用
  • 5.9号模拟前端面试10问
  • vue3 JSX的使用与警告【JSX 元素隐式具有类型 “any“,因为不存在接口 “JSX.IntrinsicElements“】解决办法
  • 一、计算机基础(Java零基础一)
  • 德国著名自动化公司Festo设计了一款仿生蜜蜂,仅重34g,支持多只蜜蜂编队飞行!...
  • 折腾记:C++用开源库Snap7通过S7协议连接西门子PLC
  • Android studio 新版本 NewUI toolbar显示快捷按钮