LeetCode之二叉搜索树

server/2024/9/23 11:59:49/

530. 二叉搜索树的最小绝对差

/*** 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 {// 用于存储前一个节点的值int pre;// 用于存储当前最小差值int ans;public int getMinimumDifference(TreeNode root) {// 初始化前一个节点值为-1(表示未设置)pre = -1;// 初始化最小差值为最大值ans = Integer.MAX_VALUE;// 调用深度优先搜索方法dfs(root);// 返回最小差值return ans;}private void dfs(TreeNode root) {if (root == null) {// 如果当前节点为空,返回return;}// 先遍历左子树dfs(root.left);// 处理当前节点if (pre == -1) {// 如果前一个节点的值未设置,设置为当前节点的值pre = root.val;} else {// 更新最小差值ans = Math.min(ans, root.val - pre);// 更新前一个节点的值为当前节点的值pre = root.val;}// 接着遍历右子树dfs(root.right);}
}

230. 二叉搜索树中第 K 小的元素

/*** 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 {public int kthSmallest(TreeNode root, int k) {// 创建一个列表用于存储二叉搜索树中节点的值List<Integer> result = new ArrayList<>();// 调用辅助方法来填充列表helper(root, result);// 返回列表中第 k 小的元素(列表索引从 0 开始,所以 k-1)return result.get(k - 1);}public void helper(TreeNode root, List<Integer> result) {// 如果当前节点为空,直接返回if (root == null) {return;}// 递归遍历左子树helper(root.left, result);// 将当前节点的值添加到列表中result.add(root.val);// 递归遍历右子树helper(root.right, result);}}

98. 验证二叉搜索树

/*** 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 {public boolean isValidBST(TreeNode root) {// 入口调用辅助方法,传入最小可能值和最大可能值,这里使用 Long 类型的最小最大值代表无穷小和无穷大return helper(root, Long.MIN_VALUE, Long.MAX_VALUE);}public boolean helper(TreeNode root, long lower, long upper) {// 根据二叉搜索树的性质,左子树的值小于根节点,右子树的值大于根节点// 递归地判断当前节点的值是否在给定的上下限范围内// 边界条件,如果当前节点为 null,说明已经遍历到叶子节点的子节点,可认为是合法的二叉搜索树,返回 trueif (root == null) {return true;}// 如果当前节点的值小于等于下限或者大于等于上限,说明不是合法的二叉搜索树,返回 falseif (root.val <= lower || root.val >= upper) {return false;}// 递归检查左子树,左子树的所有节点值应该小于当前节点值,所以上限变为当前节点值// 递归检查右子树,右子树的所有节点值应该大于当前节点值,所以下限变为当前节点值return helper(root.left, lower, root.val) && helper(root.right, root.val, upper);}}


http://www.ppmy.cn/server/116249.html

相关文章

Linux TCP服务器和客户端学习

socket 这里实现的是单连接的情况&#xff0c;即一个服务器只能连接一个客户端。实现的功能是 服务器端&#xff1a;等待客户端连接&#xff0c;连接后显示客户端发送的数据&#xff0c;并将数据原样发送给客户端。 客户端&#xff1a;连接服务器&#xff0c;然后向服务器发送…

ubuntu24.04 为什么扬声器没有声音,但是戴上耳机有声音

扬声器在 Ubuntu 24.04 下没有声音&#xff0c;但耳机有声音&#xff0c;可能是由于以下几个原因造成的&#xff1a; 1. 输出设备设置问题 系统可能将默认输出设备设置为耳机&#xff0c;而非扬声器。你可以检查或更改音频输出设备&#xff1a; 打开“设置” -> “声音”…

ubuntu 22.04 编译安装新内核

1、普通用户登录系统 查看当前内核版本 $ uname -r 5.15.0-118-generic 2、下载内核源码 www.kernel.org 用户home目录新建子目录linux&#xff0c;下载并解压 linux-5.15.165.tar.xz 3、创建起始的配置文件.config Configuration targets &#xff08;见linux kernel i…

STM32常用数据采集滤波算法

例如&#xff0c;STM32进行滤波处理时&#xff0c;主要目的是处理数据采集过程中可能产生的噪声和尖刺信号。这些噪声可能来自电源干扰、传感器自身的不稳定性或其他外部因素。 1.一阶互补滤波 方法&#xff1a;取a0~1,本次滤波结果&#xff08;1-a&#xff09;本次采样值a上…

mysql设置自动更新updatetime

已经创建过列 ALTER TABLE table_name CHANGE update_time update_time DATETIME on update CURRENT_TIMESTAMP NULL DEFAULT NULL; 要添加新的列 ALTER TABLE table_name ADD update_date DATETIME on update CURRENT_TIMESTAMP NOT NULL;

C 408—《数据结构》算法题基础篇—链表(上)

目录 Δ前言 一、链表中特定值结点的删除 0.题目&#xff1a; 1.算法设计思想&#xff1a; 2.C语言描述&#xff1a; 3.算法的时间和空间复杂度&#xff1a; 二、链表链表最小值结点的删除 0.题目 : 1.算法设计思想 : 2.C语言描述 : 3.算法的时间和空间复杂度 : 三、链…

腾讯百度阿里华为常见算法面试题TOP100(1):动态规划、贪心算法、多维动态规划

之前总结过字节跳动TOP50算法面试题: 字节跳动常见算法面试题top50整理_沉迷单车的追风少年-CSDN博客_字节算法面试题 目录 贪心算法 121.买卖股票的最佳时机 55.跳跃游戏 45.跳跃游戏II 763.划分字母区间 动态规划 70.爬楼梯 118.杨辉三角 198.打家劫舍 ​编辑 27…

【计算机网络】网络层

目录 IP协议详解 虚拟互联网络 IP协议 IP地址​ IP首部 IP协议的转发流程 路由表的简介 IP协议的转发流程 ARP协议与RARP协议 ARP RARP IP地址的子网划分 分类的IP地址 划分子网 无分类编址CIDR 网络地址转换NAT技术 ICMP协议详解 ICMP协议的应用 Ping应用…