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

一、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++;}//更新结果及maxCountif(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.mzph.cn/news/689761.shtml

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

相关文章

【Google SEO】SEO指标

SEO最难的事情之一就是&#xff1a; 你怎么知道你正在做的事情是否真的有效&#xff1f; 这是一个很难回答的问题。特别是因为SEO可能需要几个月的时间才能真正发挥作用。 好吧&#xff0c;今天您将确切地看到要跟踪的SEO指标。如何跟踪它们。以及如何加倍努力&#xff0c;为…

无法正常下载mxnet

无法正常下载mxnet 前言报错截图问题分析参考内容 前言 最近在看李沐老师的深度学习的内容,之前落下一直没看,目前在运行代码的时候无法下载mxnet 报错截图 使用python常用的下载方式下载mxnet出现如下问题,这是问题的部分截图 Building wheels for collected packages: nu…

阿里云香港轻量应用服务器是什么线路?

阿里云香港轻量应用服务器是什么线路&#xff1f;不是cn2。 阿里云香港轻量服务器是cn2吗&#xff1f;香港轻量服务器不是cn2。阿腾云atengyun.com正好有一台阿里云轻量应用服务器&#xff0c;通过mtr traceroute测试了一下&#xff0c;最后一跳是202.97开头的ip&#xff0c;1…

分库分表面试必背

一&#xff0c;背景 随着互联网的普及&#xff0c;使用人数和场景爆炸式增长&#xff0c;现在随便一个应用系统都可能达到数百万千万甚至更大数量级的数据。大量的数据带来了新的挑战&#xff0c;怎么快速完成增删改查的业务&#xff0c;是应用服务开发者最头痛的问题。面对这个…

OSPF解析:深入探索网络的心脏运作机制

1. OSPF的基本概念 OSPF&#xff08;Open Shortest Path First&#xff09;是一种用于IP网络的内部网关协议&#xff08;IGP&#xff09;。它是一种链路状态路由协议&#xff0c;使用Dijkstra算法计算最短路径树&#xff0c;以确定到达网络中每个目的地的最佳路径。OSPF被设计…

Linux网络编程套接字

目录 认识端口号认识传输层协议TCP/UDP网络字节序socket编程接口实现简单的UDP网络程序实现远程执行服务器shell指令Windows套接字编写UDP实现一个简单的聊天室实现简单的TCP网络程序TCP实现一个中英互译程序守护进程原理 认识端口号 在进行网络通信的时候是不是我们两台机器…

grafana配置钉钉告警模版(一)

1、配置钉钉告警模版 创建钉钉告警模版&#xff0c;然后在创建钉钉告警时调用模版。 定义发送内容具体代码 my_text_alert_list 是模版名称后面再配置钉钉告警时需要调用。 {{/* 定义消息体片段 */}} {{ define "my_text_alert_list" }}{{ range . }}告警名称&…

SpringAop是什么?

简单介绍&#xff1a; AOP&#xff1a;Aspect Oriented Programming (面向切面编程、面向方面编程)&#xff0c;其实就是面向特定方法编程。 场景&#xff1a; 比如现在有一个需求&#xff0c;我要统计每一个业务方法的耗时时长&#xff0c; 我们只需在业务方法的前面获取一个…

srs 边缘集群

srs官方关于边缘集群的介绍&#xff1a; Edge Cluster | SRS 本篇分析一下边缘集群中上行边缘节点的处理逻辑。 关于上行的边缘节点&#xff1a; SRS对于上行边缘&#xff0c;采取直接代理方式&#xff0c;并没有采取边缘缓存方式。所谓边缘缓存方式&#xff0c;即推流到边…

操作系统概念

一、概念 任何计算机系统都包含一个基本的程序集合&#xff0c;称为操作系统(OS)。笼统的理解&#xff0c;操作系统包括&#xff1a; 内核&#xff08;进程管理&#xff0c;内存管理&#xff0c;文件管理&#xff0c;驱动管理&#xff09;其他程序&#xff08;例如函数库&…

区块链技术和Hyperledger Fabric介绍

1 区块链介绍 1.1 区块链技术形成 1.1.1 起源 在比特币诞生之时&#xff0c;技术专家们开始研究比特币的底层技术&#xff0c;并抽象提取出来&#xff0c;形成区块链技术&#xff0c;或者称分布式账本技术。 1.1.2 定义 简称BT&#xff08;Blockchain technology&#xff…

【递归】【后续遍历】【迭代】【队列】Leetcode 101 对称二叉树

【递归】【后续遍历】Leetcode 101 对称二叉树 解法一&#xff1a; 递归&#xff1a;后序遍历 左右中解法二&#xff1a; 迭代法&#xff0c;用了单端队列 ---------------&#x1f388;&#x1f388;对称二叉树 题目链接&#x1f388;&#x1f388;------------------- 解法一…

Eclipse - Code Templates

Eclipse - Code Templates References Window -> Preferences -> C/C -> Code Style -> Code Templates 配置默认代码模板&#xff0c;可以点击 Export 将自己配置好的 Code Templates 导出去&#xff0c;以便备份和共享。 References [1] Yongqiang Cheng, https…

MACOS上面C/C++获取网卡索引,索引获取网卡接口名

依赖函数&#xff1a; if_nametoindex IF名字 to IF索引 if_indextoname IF索引 to IF名字 MACOS 10.7 版本支援&#xff08;就是2011年发不OSX的第一个面向用的系统版本&#xff09; int GetInterfaceIndex(const ppp::string& ifrName) noexcept{if (ifrName.empt…

Docker原理及概念相关

Docker最核心的组件 image&#xff1a;镜像&#xff0c;构建容器&#xff0c;也可以通过Dockerfile文本描述镜像的内容。 (我们将应用程序运行所需的环境&#xff0c;打包为镜像文件) Container&#xff1a;容器 (你的应用程序&#xff0c;就跑在容器中 ) 镜像仓库(dockerhub)(…

应急响应实战笔记02日志分析篇(5)

第5篇:MySQL日志分析 常见的数据库攻击包括弱口令、SQL注入、提升权限、窃取备份等。对数据库日志进行分析&#xff0c;可以发现攻击行为&#xff0c;进一步还原攻击场景及追溯攻击源。 0x01 Mysql日志分析 general query log能记录成功连接和每次执行的查询&#xff0c;我们…

【题解】洛谷 P4423 [BJWC2011] 最小三角形

题目链接 传送门 思路 我们充分发扬人类智慧&#xff1a; 将所有点全部绕原点随机旋转同一个角度&#xff0c;然后按 x y x\times y xy 从小到大排序。 根据数学直觉&#xff0c;在随机旋转后&#xff0c;答案中的三个点在数组中肯定不会离得太远。 所以我们只取每个点…

vue 生成word表格文档 前端库介绍

在Vue中生成Word表格文档&#xff0c;你可以使用一些前端库来帮助你完成这项任务。以下是几个流行的库及其简要介绍&#xff1a; 1. **docxtemplater**: - **介绍**: docxtemplater是一个基于JavaScript的库&#xff0c;它可以处理docx和pptx模板&#xff0c;允许你通过JSON…

《白话C++》第10章 STL和boost,Page84 shared_ptr示例使用,容器中的指针

容器中的指针在容器解体时经常忘了释放&#xff1f;指针存放在容器中多次&#xff0c;结果被重复释放&#xff1f;这个问题&#xff0c;通过std::shared_ptr都可以完美地解决&#xff1a; #include <iostream> #include <list> #include <vector> #include …

如何使用Net2FTP部署本地Web网站并实现远程文件共享

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…