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

算法第十八天|530. 二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

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

题目

在这里插入图片描述

思路与解法

第一想法: 一个二叉搜索树的最小绝对差,从根结点看,它的结点与它的最小差值一定出现在 左子树的最右结点(左子树最大值)和右子树的最左结点(右子树的最小值)。
这样搞复杂了,直接层序遍历,然后后值减前值,记录最小值

# 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:self.inorder_list = []self.inorder(root)res = float('inf')for i in range(len(self.inorder_list)-1):cur = self.inorder_list[i+1] - self.inorder_list[i]res = cur if cur < res else resreturn resdef inorder(self,root):if not root:returnself.inorder(root.left)self.inorder_list.append(root.val)self.inorder(root.right)

501.二叉搜索树中的众数

题目

在这里插入图片描述

思路与解法

第一想法: 遍历

# 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]:from collections import defaultdictclass Solution:def searchBST(self, cur, freq_map):if cur is None:returnfreq_map[cur.val] += 1  # 统计元素频率self.searchBST(cur.left, freq_map)self.searchBST(cur.right, freq_map)def findMode(self, root):freq_map = defaultdict(int)  # key:元素,value:出现频率result = []if root is None:return resultself.searchBST(root, freq_map)max_freq = max(freq_map.values())for key, freq in freq_map.items():if freq == max_freq:result.append(key)return result

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

题目

在这里插入图片描述

思路与解法

carl的讲解: 如果左右都有返回值,那就是它。不可能出现第二个左右都有返回值的节点,因为本题树中节点不重复。

# 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 == None:return rootleft = self.lowestCommonAncestor(root.left, p, q)right = self.lowestCommonAncestor(root.right, p, q)if left and right:return rootif not left and right:return rightelif left and not right:return leftelse:return None

相关文章:

  • Agent Builder API - Agent Smith 扩展的后端服务(开源代码)
  • 学习机器学习的体会与姓名性别预测案例分析
  • 智能工具协同赋能STEM教育科研|探索LLM大语言模型和数学软件Maple的创新实践
  • 反向操作:如何用AI检测工具优化自己的论文“人味”?
  • 华为云Flexus+DeepSeek征文|基于华为云ModelArts Studio平台体验DeepSeek-V3大模型
  • idea中编写spark程序
  • npm install 报错
  • CMD(Command Prompt)和 Anaconda 的不同
  • c# 倒序方法
  • 数据结构(八)——查找
  • 2025-5-14渗透测试:利用Printer Bug ,NTLMv2 Hash Relay(中继攻击),CVE-2019-1040漏洞复现
  • 环境配置与MySQL简介
  • css设置文字两端对齐text-align:justify不起作用的解决方法
  • C++之fmt库介绍和使用(1)
  • 【数据分析】从TCGA下载所有癌症的多组学数据
  • 【SSL证书系列】SSL证书工作原理解读
  • 开发者的测试复盘:架构分层测试策略与工具链闭环设计实战
  • 【电路笔记 通信】8B/10B编码 高速数据传输的串行数据编码技术 论文第三部分 The 8B/10B coding map
  • 论文查询的ai工具 —— SCAICH
  • ISP有感自发
  • 秦洪看盘|指标股发力,A股渐有突破态势
  • 七部门:进一步增强资本市场对于科技创新企业的支持力度
  • A股三大股指涨跌互现:银行股领涨,两市成交12915亿元
  • 讲一个香港儿童的故事,《劏房的天空》获“周庄杯”特等奖
  • 熊出没!我驻日本札幌总领馆提示中国公民注意人身安全
  • 国羽用冠军开启奥运周期,林丹:希望洛杉矶奥运取得更好成绩