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

二叉树的算法

112. 路径总和

力扣题目链接(opens new window)

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。

说明: 叶子节点是指没有子节点的节点。

示例: 给定如下二叉树,以及目标和 sum = 22,

返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2

class Solution:def hasPathSum(self, root: Optional[TreeNode], targetSum: int) -> bool:if not root:return FalsetargetSum = targetSum - root.valif  (not root.left) and  (not root.right) and targetSum == 0:return True return self.hasPathSum(root.left, targetSum) or self.hasPathSum(root.right,targetSum)

513.找树左下角的值

力扣题目链接(opens new window)

给定一个二叉树,在树的最后一行找到最左边的值。

示例 1:

513.找树左下角的值

示例 2:

513.找树左下角的值1

def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:if not root: return -1queue=[]queue.append(root)results = []while queue:level = len(queue)result = []for _ in range(level):node = queue.pop(0)result.append(node.val)if node.left:queue.append(node.left)if node.right:queue.append(node.right)results.append(result)return results[-1][0]
def buildTree(self, inorder: List[int], postorder: List[int]) -> Optional[TreeNode]:if not postorder:return NonerootVal = postorder[-1]root = TreeNode(rootVal)i = inorder.index(rootVal)left_inorder = inorder[:i]right_inorder = inorder[i + 1:]left_postorder = postorder[:len(left_inorder)]right_postorder = postorder[len(left_inorder): len(postorder) - 1]root.left = self.buildTree(left_inorder, left_postorder)root.right = self.buildTree(right_inorder, right_postorder)return root
def buildTreeWithPreAndIn(self,preorder:List[int], inorder:List[int]):if not preorder:return NonerootVal = preorder[0]root = TreeNode(rootVal)i = preorder.index(rootVal)left_inorder = inorder[:i - 1]right_inorder = inorder[i:]left_preorder = preorder[1:1 + len(left_inorder)]right_preorder = preorder[1 + len(left_inorder):]root.left = self.buildTreeWithPreAndIn(left_preorder,left_inorder)root.right = self.buildTreeWithPreAndIn(right_preorder,right_inorder)return root

1. python 中的 &&  | 用 and  和or 表示

2. 判空  if root   if not root   

queue = []

3. 方法内部调用自己要用self

4.判空 if not  list 

   list[-1] 取最后一个元素

   list[:1] 包含1

   list[1:] 不包含1

   list[1:2] 包含1 不包含1 

http://www.xdnf.cn/news/1019143.html

相关文章:

  • 将包含父子关系的扁平列表 List<Demo> 转换成树形结构的 List<DemoVO>,每个节点包含自己的子节点列表
  • 年化收益237%的策略,12年年化是38%,支持配置最小日期,附aitrader_1.5代码发布
  • 爬虫技术栈解析:XPath与BeautifulSoup的深度对比与实践指南
  • WPF数据绑定疑惑解答--(关于控件的Itemsource,Collection绑定)
  • 获取Linux设备系统启动时间和进程启动时间
  • 基于Netty的UDPServer端和Client端解决正向隔离网闸数据透传问题
  • 前端八股文-vue篇
  • 2025-06-13【视频处理】基于视频内容转场进行分割
  • 深度剖析:AI 社媒矩阵营销工具,如何高效获客?
  • 实验复现:应用 RIR 触发器的 TrojanRoom 后门攻击实现
  • Java虚拟机解剖:从字节码到机器指令的终极之旅(二)
  • 【第一章:人工智能基础】03.算法分析与设计-(4)贪心算法(Greedy Algorithm)
  • C++ 中文件 IO 操作详解
  • 软件开发 | 从 Azure DevOps迁移至GitHub企业版的最佳路径
  • HTTP全攻略:从入门到精通
  • @RequestHeader(“Authorization“) 解析:HTTP 请求头中的 Authorization 字段
  • JSON 编辑器:从语法到数据处理(二)
  • 在C#中乐观锁的实现
  • ios 26发布:设计革新与智能整合
  • 分析实例,学习了解浏览器事件循环机制
  • 基于ssm的教学质量评估系统
  • CIM和建筑风貌管控平台
  • [7-01-03].第03节:环境搭建 - 集群架构
  • Java企业技术趋势分析:AI应用的落地实践与未来展望
  • nuxt2报错Unexpected token ‘{‘
  • CSS flex-basis 属性详解:功能、用法与最佳实践
  • CSS Houdini 解锁前端动画的下一个时代!
  • 主流版本控制工具Git vs Perforce P4:架构模式、性能、大文件管理及分支管理对比详解
  • 在线教程丨刷新TTS模型SOTA,OpenAudio S1基于200万小时音频数据训练,深刻理解情感及语音细节
  • 引入 Kafka 消息队列解耦热点操作