代码随想录算法训练营 DAY20 | 二叉树(7)

news2025/1/17 3:55:49

一、LeetCode 530 二叉搜索树的最小绝对值

题目链接:530.二叉搜索树的最小绝对值icon-default.png?t=N7T8https://leetcode.cn/problems/minimum-absolute-difference-in-bst/

思路一:利用搜索二叉树的中序遍历结果为有序数组的性质,将遍历结果保存到数组中,再找最小绝对值。

class Solution {
    List<Integer> list = new LinkedList<>();
    public int getMinimumDifference(TreeNode root) {
        //二叉搜索树的中序遍历结果是一个有序数组
        midgo(root);
        int ans = Integer.MAX_VALUE;
        for(int i = 1; i < list.size(); i++){
            int temp = list.get(i) - list.get(i-1);
            if( temp < ans){
                ans = temp;
            }
        }
        return ans;
    }
    public void midgo(TreeNode root){
        if(root == null){
            return;
        }
        midgo(root.left);
        list.add(root.val);
        midgo(root.right);
    }
}
/**
 * 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;
 *     }
 * }
 */

 思路二:利用pre节点记录上个遍历到的节点数值,直接完成递归遍历和计算。

class Solution {
    int result = Integer.MAX_VALUE;
    TreeNode pre = null;
    public int getMinimumDifference(TreeNode root) {
        travel(root);
        return result;
    }
    public void travel(TreeNode root){
        if(root == null){
            return;
        }
        travel(root.left);
        //前一个节点不为空,比较差值与已保存的最小绝对值
        if(pre != null){
            result = Math.min(result,root.val-pre.val);
        }
        //记录前一个节点
        pre = root;
        travel(root.right);
    }
}
/**
 * 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;
 *     }
 * }
 */

 二、LeetCode 501 二叉搜索树中的众数

题目链接:501.二叉搜索树中的众数icon-default.png?t=N7T8https://leetcode.cn/problems/find-mode-in-binary-search-tree/

思路:利用二叉搜索树中序遍历为有序数组的性质,设置pre记录上一个节点,对众数进行计数及结果更新。

 //二叉搜索树特性:中序遍历结果为有序数组
class Solution {
    List<Integer> list;
    int maxCount;
    int count;
    TreeNode pre;
    public int[] findMode(TreeNode root) {
        list = new ArrayList<>();
        maxCount = 0;
        count = 0;
        pre = null;
        travel(root);
        int n = list.size();
        int[] ans = new int[n];
        for(int i = 0; i < n; i++){
            ans[i] = list.get(i);
        }
        return ans;
    }
    public void travel(TreeNode root){
        if(root == null){
            return;
        }
        travel(root.left);
        //利用中序遍历特性计数
        if(pre == null || root.val != pre.val){
            count = 1;
        }else{
            count++;
        }
        //更新结果及maxCount
        if(count > maxCount){
            maxCount = count;
            //最大值改变,清空结果
            list.clear();
            list.add(root.val);
        }else if(count == maxCount){
            //最大值未变,添加结果
            list.add(root.val);
        }
        pre = root;
        travel(root.right);
    }
}
/**
 * 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;
 *     }
 * }
 */

三、LeetCode 236 二叉树的最近公共祖先

题目链接:236.二叉树的最近公共祖先icon-default.png?t=N7T8https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/description/明日待续......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1455798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分析:香港2亿港元诈骗案的风险特征及技术检测思路

目录 深度伪造带来的新挑战 如何有效检测深度伪造&#xff1f; 多管齐下的安全策略 据香港公共广播公司报道&#xff0c;一家跨国公司香港分行的一名员工在一次电话会议后被骗支付了2亿港元&#xff08;超过2500万美元&#xff09;的资金。 据介绍&#xff0c;这起骗局始于202…

【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II

LeetCode685. 冗余连接 II 在本问题中&#xff0c;有根树指满足以下条件的 有向 图。该树只有一个根节点&#xff0c;所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点&#xff0c;而根节点没有父节点。 输入一个有向图&#xff0c;该图由…

Python学习(16)|列表_遍历_排序_max_min_sum

列表的遍历&#xff1a; a [10,20,30,40] for obj in a: #obj 是临时变量名称&#xff0c;随意起名print(obj) 执行结果&#xff1a; 复制列表所有的元素到新列表对象&#xff1a; list1 [30,40,50] list2 list1 #只是将list2也指向了列表对象。也就是说list…

基于Python3的数据结构与算法 - 01 复杂度和列表查找

一、时间复杂度 定义&#xff1a;用来评估算法运行效率的一个式子。 例如&#xff1a;此处的O(1) 详单与一个时间单位 接下来我们看下面两个式子&#xff1a; 如果按照上面的定义&#xff0c;那么打印三次相当O(3)&#xff0c;下面的循环相当于O(n21) 但是实际不是这样的 因…

YOLO v5项目实战 P5 解决运行detect文件时设置了--view-img但是显示不出来的问题

up主讲的实时显示目标检测后的图片的两种方法&#xff1a; &#xff08;1&#xff09;在下面的Terminal中输入下列命令&#xff1a; python detect.py --view-img &#xff08;2&#xff09;点击进入右上方的detect的Edit Configurations 然后在这个参数这里输入 --view img…

Pulsar-架构与设计

Pulsar架构与设计 一、背景和起源二、框架概述1.设计特点2.框架适用场景 三、架构图1.Broker2.持久化存储&#xff08;Persistent storage&#xff09;3.Pulsar元数据&#xff08;Metadata store&#xff09; 四、功能特性1.消息顺序性2.消息回溯3.消息去重4.消息重投递5.消息重…

一键安装ROS适用于Ubuntu22/20/18

一键安装ROS适用于Ubuntu22/20/18 1、简介 ROS&#xff08;Robot Operating System&#xff0c;机器人操作系统&#xff09;是一个用于机器人软件开发的框架。它提供了一套工具和库&#xff0c;用于机器人应用程序的开发、测试和部署。ROS是由美国斯坦福大学机器人实验室&…

银河麒麟操作系统自动同步时间更新

1、银河麒麟操作系统基于Centos8的&#xff0c;因centos8取消了ntp服务器&#xff0c;所以导致之前使用ntpdate命令无法同步时间 2、centos默认使用chrony模块来进行同步时间 3、修改chrony配置同步时间服务器 vim /etc/chrony.conf 4、目前使用的是阿里云的时间服务器&…

2024年初中生古诗文大会安排预测和备考建议、资料

今天&#xff08;2024年2月19日&#xff09;是上海市中小学正式开学的日子&#xff0c;神兽归位&#xff0c;各位家长可以松口气了&#xff0c;为孩子规划今年的竞赛、学科活动了。根据一些家长朋友的咨询&#xff0c;今天六分成长介绍2024年中学生古诗文大会&#xff08;初中组…

图数据库 之 Neo4j - Cypher语法基础(5)

节点(Nodes) Cypher使用()来表示一个节点。 () # 最简单的节点形式&#xff0c;表示一个任意无特征的节点&#xff0c;其实就是一个空节点(movie) # 如果想指向一个节点在其他地方&#xff0c;我们可以给节点添加一个变量名(如movie)&#xff0c;表示一个变量名为 movie的节点…

SQL Developer 小贴士:Unshared Worksheet

在Oracle SQL Developer中&#xff0c;最常用的功能应该是SQL Worksheet&#xff0c;或Worksheet。 可以创建两类Worksheet&#xff0c;即Worksheet和Unshared Worksheets。前者是共享数据库连接的&#xff0c;后者会单独创建自己的连接。前者的快捷键是AltF10&#xff1b;后者…

SSM项目启动错误[main] ERROR org.springframework.boot.SpringApplication

[main] ERROR org.springframework.boot.SpringApplication - Application run failed org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1 这个错误是由于Spring Boot应用程序在解析YAML文件时遇到了字符编码问题。java.ni…

国产降压芯片 小封装 外围简单 支持36V 48V 60V 85V 100V电压-H6225L

国产降压芯片&#xff0c;也就是由中国企业设计和生产的用于电压转换的集成电路芯片&#xff0c;随着国内半导体产业的快速发展&#xff0c;这些芯片已经开始在一些领域显示出其优势。主要优势涵盖以下几个方面&#xff1a; 成本优势&#xff1a;国产降压芯片因为本土化生产&a…

NLP_GPT生成式自回归模型

文章目录 介绍完整代码小结 介绍 自回归(Autoregressive)是自然语言处理模型的一种训练方法&#xff0c;其核心思想是基于已有的序列(词或字符)来预测下一个元素。在GPT中&#xff0c;这意味着模型会根据给定的上文来生成下一个词&#xff0c;如图所示。 在GPT模型的训练和推…

数据分析 — 动画图 pyecharts

目录 一、概念二、安装和导入三、绘图逻辑四、绘图1、柱状图2、折线图3、散点图4、饼图5、南丁格尔图6、Geo() 地理坐标第7、Map() 绘制区域8、词云图9、层叠图10、3D 图11、仪表板 一、概念 Pyecharts 是一个基于 Echarts 的 Python 可视化库&#xff0c;它通过 Python 生成 …

猪圈Pigsty-PG私有RDS集群搭建教程

博客 https://songxwn.com/Pigsty-PG-RDS/ 简介 Pigsty 是一个更好的本地自建且开源 RDS for PostgreSQL 替代&#xff0c;具有以下特点&#xff1a; 开箱即用的 PostgreSQL 发行版&#xff0c;深度整合地理、时序、分布式、图、向量、分词、AI等 150 余个扩展插件&#xff…

OpenAI Sora —— 文生视频为何如此逼真?AI算法架构解析

OpenAI于2024年2月16日发布了名为Sora的文生视频模型。Sora是一个革命性的视频生成模型&#xff0c;可以根据用户输入的简单文本脚本自动生成与好莱坞级别画面相媲美的视频内容&#xff0c;其生成的视频不仅仅是对已有素材的拼接或剪辑合成&#xff0c;而是从像素级别全新“绘制…

【Jvm】性能调优(上)线上问题排查工具汇总

文章目录 一.互联网概念1.产品闭环和业务闭环2.软件设计中的上游和下游3.JDK运行时常量池 二.CPU相关概念1.查询CPU信息2.CPU利用率&#xff08;CPU utilization&#xff09;和 CPU负载&#xff08;CPU load&#xff09;2.1.如何理解CPU负载2.2.top命令查看CPU负载均值2.3.CPU负…

动态头部:统一目标检测头部与注意力

论文地址:https://arxiv.org/pdf/2106.08322.pdf ai阅读论文_论文速读_论文阅读软件-网易有道速读 创新点是什么? 这篇文档的创新点是提出了一种统一的方法&#xff0c;将对象检测头和注意力机制结合起来。作者在文中提出了一种称为Dynamic Head的方法&#xff0c;通过引入…

Android 15 第一个开发者预览版

点击查看&#xff1a;first-developer-preview-android15 点击查看&#xff1a;Get Android 15 2024年2月16日,谷歌发布 Android 15 第一个开发者预览版 翻译 由工程副总裁戴夫伯克发布 今天&#xff0c;我们发布了Android 15的首个开发者预览版&#xff0c;这样我们的开发者就…