day18-binary tree-part06-7.20

tasks for today:

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

2. 501.二叉搜索树中的众数

3. 236.二叉树的最近公共祖先

-----------------------------------------------------------------

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

in this practice, the target tree is a binary search tree, which makes it have a special feature that its inorder is an ascending list, so we can first get the inorder list for the binary search tree and then go throught the list recoridng the min_val.

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def getMinimumDifference(self, root: Optional[TreeNode]) -> int:# get inorder list, which get the inscending order listresult = []def inorder_travese(node):if not node:return Noneinorder_travese(node.left)result.append(node.val)inorder_travese(node.right)inorder_travese(root)min_val = float('inf')for i in range(1, len(result)):if result[i] - result[i-1] < min_val:min_val = result[i] - result[i-1]return min_val

2. 501.二叉搜索树中的众数 

This practice, a defaultdict can be used to calculate the frequency of the showup for a tree node's value:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def findMode(self, root: Optional[TreeNode]) -> List[int]:calcu = collections.defaultdict(int)nodeQueue = collections.deque([root])while nodeQueue:cur = nodeQueue.popleft()calcu[cur.val] += 1if cur.left:nodeQueue.append(cur.left)if cur.right:nodeQueue.append(cur.right)max_num = max(calcu.values())result = []for key, value in calcu.items():if value == max_num:result.append(key)return result

In this practice, the above method is a general solution which works for all types of tress, but if the tree is a not normal binary tree, instead a binary search tree, there is also other solutions which is incented by the binary search tree's feature that the inorder list is an asceding list.

this method use double pointers, similar with 530.

3. 236.二叉树的最近公共祖先

this practice is a bit challenging, the tutorial include a summary for sorting when the recursive has return value.

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':if root == p or root == q or root is None:return rootleft = self.lowestCommonAncestor(root.left, p, q)right = self.lowestCommonAncestor(root.right, p, q)if left and right: return rootelif not left and right: return rightelif left and not right: return leftelse: return None

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

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

相关文章

RAG-LLM Survey

大模型虽然厉害&#xff0c;但是存在着幻觉、知识陈旧等问题。检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;可以通过挂载外部知识库&#xff0c;来提升生成内容的准确性和可信度。了解一个研究方向的最快的方法&#xff0c;就是阅读相关的综述。今…

Python数据可视化------动态柱状图

一、基础柱状图 # 基础柱状图 # 导包 from pyecharts.charts import Bar from pyecharts.options import *# 构建柱状图 bar Bar() # 添加数据&#xff08;列表&#xff09; x_list ["张三", "李四", "王五", "赵六"] y_list [50,…

你的生产车间有个好“布局”吗?

对于生产车间而言&#xff0c;科学合理的布局设计便是这“成功的一半”。在现代制造环境中&#xff0c;高效的物流动线、合理的设备配置、以及人性化的工作环境&#xff0c;是提升生产效率、保障产品质量的关键。 一个好布局的生产车间需具备以下几个关键特征&#xff0c;以确保…

【ADRC笔记】LESO-Wb

公式推导(bilibili) 一阶ESO 二阶ESO 二阶自抗扰控制器基本原理 选取状态变量 观测器收敛性推导 wo 观测器带宽

【ubuntu 网卡混杂模式设置】

ubuntu 网卡混杂模式设置 在 ubuntu上设置混杂模式确保防火墙允许混杂模式检查网卡是否已设置为混杂模式使用 ifconfig使用 ethtool使用 ip link 在 ubuntu上设置混杂模式 本文介绍在Ubuntu系统上查看网卡是否是混杂模式&#xff0c;以及设置混杂模式。 确保防火墙允许混杂模…

数据结构(下)复习

一丶数据结构概述 1.数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的关系和运算等的学科。 2.基本数据结构&#xff0c;从逻辑上可分为线性结构和非线性结构&#xff0c;大体上可分成表结构、树结构、图结构 和散结构4大类 表结构用于表示结点的…

Java 滑动时间窗口统计接口调用次数

Java 滑动时间窗口统计接口调用次数 在分布式系统中&#xff0c;接口调用次数的监控是一个非常重要的任务。它可以帮助我们了解系统的负载情况&#xff0c;及时发现性能瓶颈&#xff0c;以及为系统扩容提供依据。在这篇文章中&#xff0c;我们将讨论如何使用 Java 实现滑动时间…

科普文:百度交易中台之订单系统架构浅析

百度交易中台作为集团移动生态战略的基础设施&#xff0c;面向收银交易与清分结算场景&#xff0c;为赋能业务提供高效交易生态搭建。目前支持百度体系内多个产品线&#xff0c;主要包含&#xff1a;小程序&#xff0c;地图打车&#xff0c;百家号&#xff0c;招财猫&#xff0…

算法题目整合

文章目录 121. 小红的区间翻转142. 两个字符串的最小 ASCII 删除总和143. 最长同值路径139.完美数140. 可爱串141. 好二叉树 121. 小红的区间翻转 小红拿到了两个长度为 n 的数组 a 和 b&#xff0c;她仅可以执行一次以下翻转操作&#xff1a;选择a数组中的一个区间[i, j]&…

自然语言处理基础【1】词嵌入

词嵌入&#xff08;Word Embedding&#xff09; 词嵌入&#xff08;Word Embedding&#xff09;是一种自然语言处理技术&#xff0c;用于将词语或短语转换为实数向量&#xff0c;以便机器能够理解和处理语言。它通过捕捉词语之间的语义和语法关系&#xff0c;能够在高维空间中…

企业微信PC版应用跳转到默认浏览器,避坑指南,欢迎补充(Vue项目版)。。。

引子 关于企业微信PC版应用跳转到默认浏览器&#xff0c;我之前写过一篇文章&#xff1a;企业微信PC版应用跳转到默认浏览器&#xff0c;避坑指南&#xff0c;欢迎补充。。。 以前的文章里用的前后端一体的Jsp项目&#xff0c;这次我使用的是前后端分离的Vue项目&#xff0c;…

使用Event Sourcing模式管理应用状态

在现代软件开发中&#xff0c;应用状态的管理是一个复杂且关键的问题。传统的CRUD&#xff08;创建、读取、更新、删除&#xff09;模型在处理复杂业务逻辑时可能会遇到瓶颈。Event Sourcing&#xff08;事件溯源&#xff09;模式提供了一种新的方法&#xff0c;通过记录所有状…

C语言 通讯录管理 完整代码

这份代码&#xff0c;是我从网上找的。目前是能运行。我正在读。有些不懂的地方&#xff0c;等下再记录下来。 有些地方的命名&#xff0c;还需要重新写一下。 比如: PersonInfo* info &address_book->all_address[address_book->size]; 应该改为&#xff1a; Perso…

使用SpringCloud搭建分布式配置中心

在现代的分布式系统中&#xff0c;配置管理是一个非常重要的组成部分。传统的做法是将配置文件放在每个服务的本地进行配置&#xff0c;这样的做法在规模较小的系统中还能够接受&#xff0c;但是当系统规模逐渐扩大时&#xff0c;配置管理将变得非常困难&#xff0c;容易出错。…

QT--文件操作和文件读写

文件操作和文件读写 QFile 类用于对文件进行操作&#xff0c;它继承自 QIODevice&#xff0c;可以进行读写操作。主要用于打开、关闭、读取、写入和管理文件。 1. 首先要指定文件路径 QFile fn(“文件路径”);也可以通过文件对话框来选择文件getOpenFileName 函数原型 QStr…

怎么降低美国服务器硬盘故障率?

要降低硬盘故障率&#xff0c;首先需要了解其产生的原因&#xff0c;常见的美国服务器硬盘故障原因包括温度过高、振动过大、电流不稳定、质量问题等。对于美国服务器而言&#xff0c;由于其运行环境可能存在差异&#xff0c;如温湿度变化大、电力供应不稳定等&#xff0c;这些…

部署Mojo模型:生产环境中的智能自动化

部署Mojo模型&#xff1a;生产环境中的智能自动化 在机器学习项目的生命周期中&#xff0c;模型的部署是一个至关重要的环节。Mojo模型&#xff0c;作为H2O.ai提供的一种模型导出格式&#xff0c;允许开发者将训练好的模型轻松部署到生产环境中。本文将详细介绍如何在生产环境…

【大数据面试题】37 Doris 是怎么保证性能的?

一步一个脚印&#xff0c;一天一道大数据面试题 博主希望能够得到大家的点赞收藏支持&#xff01;非常感谢 点赞&#xff0c;收藏是情分&#xff0c;不点是本分。祝你身体健康&#xff0c;事事顺心&#xff01; Doris 是当下大热的 MPP 数据库&#xff0c;下面来聊聊它如何保证…

AGI 之 【Hugging Face】 的【零样本和少样本学习】之一 [构建标记任务] / [ 基线模型 ] 的简单整理

AGI 之 【Hugging Face】 的【零样本和少样本学习】之一 [构建标记任务] / [ 基线模型 ] 的简单整理 目录 AGI 之 【Hugging Face】 的【零样本和少样本学习】之一 [构建标记任务] / [ 基线模型 ] 的简单整理 一、简单介绍 二、零样本学习 (Zero-shot Learning) 和少样本学习…

字符大全(架构师都不知道的秘密)

序号Shell特殊字符具体解释具体示例注解1$变量替换echo $UID输出当前用户的UID2&后台运行ls &将ls命令放入后台执行3;命令分隔符echo Hello; echo World依次执行多个命令4|管道ls | grep filename将ls命令的输出作为grep命令的输入5>输出重定向echo Hello > file…