美文网首页
代码随想录算法训练营第16天|513,112(重做),113(重

代码随想录算法训练营第16天|513,112(重做),113(重

作者: 攻城狮科学家 | 来源:发表于2025-08-20 23:35 被阅读0次
  1. 找树左下角的值
    class Solution:
    def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
    if root is None:
    return 0
    queue = deque()
    queue.append(root)
    result = 0
    while queue:
    size = len(queue)
    for i in range(size):
    node = queue.popleft()
    if i == 0:
    result = node.val
    if node.left:
    queue.append(node.left)
    if node.right:
    queue.append(node.right)
    return result

  2. 路经总和
    class Solution:
    def hasPathSum(self, root: Optional[TreeNode], targetSum: int) -> bool:
    if not root:
    return False
    if not root.left and not root.right and targetSum == root.val:
    return True

    return self.hasPathSum(root.left, targetSum - root.val) or self.hasPathSum(root.right, targetSum - root.val)

106.构建二叉树
class Solution:
def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:
# 第一步: 特殊情况讨论: 树为空. 或者说是递归终止条件
if not preorder:
return None

    # 第二步: 前序遍历的第一个就是当前的中间节点.
    root_val = preorder[0]
    root = TreeNode(root_val)

    # 第三步: 找切割点.
    separator_idx = inorder.index(root_val)

    # 第四步: 切割inorder数组. 得到inorder数组的左,右半边.
    inorder_left = inorder[:separator_idx]
    inorder_right = inorder[separator_idx + 1:]

    # 第五步: 切割preorder数组. 得到preorder数组的左,右半边.
    # ⭐️ 重点1: 中序数组大小一定跟前序数组大小是相同的.
    preorder_left = preorder[1:1 + len(inorder_left)]
    preorder_right = preorder[1 + len(inorder_left):]

    # 第六步: 递归
    root.left = self.buildTree(preorder_left, inorder_left)
    root.right = self.buildTree(preorder_right, inorder_right)
    # 第七步: 返回答案
    return root

相关文章

  • 【佛系定投训练营】第3课作业重做

    【佛系定投训练营】第3课作业重做 2020-09-28 20:00 至 2020-10-01 00:00 1:总结...

  • 回溯,贪心,动态规划

    1.回溯算法思想leetcode 112 号算法题:路径总和leetcode 113 号算法题:路径总和 IIle...

  • Leetcode刷题学习网站

    代码随想录https://github.com/youngyangyang04/leetcode-master[h...

  • sizeof获取数组长度

    之前看《算法导论》这本书,第一个算法就是(直接)插入排序,根据书里给出的伪代码写出了C语言代码,也根据自己的理解重...

  • MySQL中的日志文件

    一、重做日志(redo log) redo log叫做重做日志,是用来实现事务的持久性。该日志文件由两部分组成:重...

  • 代码随想录

    Leetcode 707. 设计链表[https://leetcode.cn/problems/design-li...

  • 第113章 减重的成果

    今天是第53天,持续的掉秤中,距离要实现的120目标也似乎指日可待,饮食和喝水一切正常,没有上火和疯狂想吃东西,就...

  • 手写常用算法代码1 - 去重

    去重算法模板 : 传入的数组长度>0,返回值为去重后的数组长度。两种情况: 若数组已经排序过,则去重相同元素; 若...

  • task1

    “数据挖掘训练营”专题第一篇blog.分享包括但不限于数据探索方法、算法介绍、代码实战

  • 第一天打卡

    “数据挖掘训练营”专题第一篇blog.分享包括但不限于数据探索方法、算法介绍、代码实战

网友评论

      本文标题:代码随想录算法训练营第16天|513,112(重做),113(重

      本文链接:https://www.haomeiwen.com/subject/lugfajtx.html