力扣每日一题:226、111、112 二叉树三连发!

2 队列 字节校园每日一题——第三周 力扣C++ Java 每日一题总结 第三周共6道队列、链表相关题 精选三道字节校园高频面试题!虽然是面向题解解题 但是还是很有收获!慢慢进步 慢慢掌握套路!冲!!! 阅读详情

226.翻转二叉树

https://leetcode-cn.com/problems/invert-binary-tree/solution/226fan-zhuan-er-cha-shu-bao-da-xiao-peng-2xze/

难度:简单

题目:

翻转一棵二叉树。

备注:
这个问题是受到 Max Howell 的 原问题 启发的 :

谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。

示例:

输入:
     4
   /   \
  2     7
 / \   / \
1   3 6   9

输出:
     4
   /   \
  7     2
 / \   / \
9   6 3   1

分析

只能说这是一套涨自信的题目,主要是这个备注,我已经超过了谷歌90%的人,还学什么?
接着奏乐,接着舞!

解题:

class Solution:
    def invertTree(self, root):
        if not root:
            return root
        root.left, root.right = root.right, root.left
        self.invertTree(root.left)
        self.invertTree(root.right)
        return root

111.二叉树的最小深度

https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/

难度:简单

题目:

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

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

提示:

  • 树中节点数的范围在 [0, 10 ^ 5] 内
  • -1000 <= Node.val <= 1000

示例:

image
输入:root = [3,9,20,null,null,15,7]
输出:2

示例 2:
输入:root = [2,null,3,null,4,null,5,null,6]
输出:5

分析

计算二叉树的最小深度,那么广度优先的效率是要比深度优先高的。

我们通过队列来逐层遍历二叉树,一旦发现某个树节点既没有左子树和右子树,那么直接返回即可。

解题:

from collections import deque
class Solution:
    def minDepth(self, root: TreeNode) -> int:
        if not root:
            return 0
        dq,depth = deque([root]), 1
        while dq:
            for i in range(len(dq)):
                tmp = dq.popleft()
                if not tmp.left and not tmp.right:
                    return depth
                if tmp.left:
                    dq.append(tmp.left)
                if tmp.right:
                    dq.append(tmp.right)
            depth += 1
        return depth

112.路径总和

https://leetcode-cn.com/problems/path-sum/solution/112lu-jing-zong-he-python-di-gui-bfs-shu-lmym/

难度:简单

题目:

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

叶子节点 是指没有子节点的节点。

提示:

  • 树中节点的数目在范围 [0, 5000] 内
  • -1000 <= Node.val <= 1000
  • -1000 <= targetSum <= 1000

示例:

示例 1:
输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
输出:true

示例 2:
输入:root = [1,2,3], targetSum = 5
输出:false

示例 3:
输入:root = [1,2], targetSum = 0
输出:false

分析

递归的解题,相信大家第一时间都可以想到。但顺手练练广度优先也是不错的...

解题-递归:

class Solution:
    def hasPathSum(self, root, targetSum):
        if not root:
            return False
        targetSum -= root.val
        if not (root.left or root.right) and targetSum == 0:
            return True
        return self.hasPathSum(root.left, targetSum) or \
               self.hasPathSum(root.right, targetSum)

解题-BFS:

from collections import deque

class Solution:
    def hasPathSum(self, root: TreeNode, targetSum: int) -> bool:
        if not root:
            return False
        queue = deque([[root, targetSum]])
        while queue:
            for i in range(len(queue)):
                child, num = queue.popleft()
                num -= child.val
                if not (child.left or child.right) and num == 0:
                    return True
                if child.left:
                    queue.append([child.left, num])
                if child.right:
                    queue.append([child.right, num])
        return False

欢迎关注我的公众号: 清风Python,带你每日学习Python算法刷题的同时,了解更多python小知识。

我的个人博客:https://qingfengpython.cn

力扣解题合集:https://github.com/BreezePython/AlgorithmMarkdown

每日一题:给定两个二叉树,编写一个函数来检验它们是否相同。 每日一题:给定两个二叉树,编写一个函数来检验它们是否相同。 2020年11月23日,力扣,简单,相同的树 一、题目描述 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: true 二、解题思路 可以采用递归思想进行判断 阅读详情

相关推荐

qmt量化交易策略小白学习笔记第67期【qmt编程之获取ETF申赎清单】

qmt编程之获取ETF申赎清单

fanglue3705的博客 1774

c++ STL中的五种序列式容器

c++ STL中的五种序列式容器 序列式容器 序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。 序列容器大致包含以下几类容器: array<T,N>(数组容器):表示可以存储 N 个 T 类型的元素,是 C++ 本身提供的一种容器。此类容器一旦建立,其长度就是固定不变的,这意味着不能增加或删除元素,只能改变某个元素的值; vector(向量容器):用来

figting 737

OLLAMA_HOST环境变量设置全攻略:从127.0.0.1到局域网共享的完整配置

本文详细解析了OLLAMA_HOST环境变量的核心作用与配置方法,指导用户如何将Ollama服务从仅限本机访问(127.0.0.1)扩展到局域网共享。文章涵盖了macOS、Linux、Windows三大平台的实战配置步骤,并提供了安全加固、性能优化及常见故障排查方案,是解决多设备协作访问本地AI模型的完整指南。

weixin_28455801的博客 1907

Invert Binary Tree——Tree

Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1   # Definition for a binary tree node. # class TreeNode(objec...

我的技术我做主...... 242

【obj To 3DTiles 进阶实战】 从零配置地理坐标系与扩展属性元数据

本文详细解析了如何将OBJ模型转换为3DTiles格式,重点介绍了地理坐标系配置与属性元数据扩展的实战技巧。通过obj23dtiles工具,开发者可以精准定位模型经纬高坐标,并添加结构化属性表,实现城市规划模型在数字孪生平台的高效应用。

weixin_27215337的博客 368

Keil5调试遇坑记:手把手解决J-Link驱动与固件版本冲突(附老版本驱动包)

本文详细解析了Keil5与J-Link调试器版本冲突问题,特别是当出现'The connected J-Link is defective'警告时的解决方案。通过对比升级固件与降级驱动的优缺点,提供了详细的J-Link驱动降级操作指南,包括获取老版本驱动、替换步骤及常见问题排查,帮助开发者高效解决这一常见调试障碍。

metaverse5vr的博客 107

【力扣日记】226 反转二叉树 | 递归

题目描述 翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 这个问题是受到 Max Howell 的 原问题 启发的 : 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时...

Heart_for_Ling的博客 403

【Linux内核】Linux内核裁剪完全指南:从理论到实战的系统优化

在嵌入式设备、专用服务器和物联网系统日益普及的今天,如何让Linux系统在资源受限的环境中高效运行成为开发者必须面对的问题。Linux内核裁剪正是解决这一问题的关键技术,它通过移除不必要的内核组件,打造出更精简、更安全、更高效的自定义操作系统。本文将系统全面地介绍Linux内核裁剪的完整流程和实用技巧,帮助您掌握这一核心技能。Linux内核裁剪是一项结合技术知识与实践经验的系统工程。明确需求:裁剪前必须清晰了解目标系统的硬件配置和功能需求。循序渐进:采取小步修改、反复测试的策略,避免一次性大幅修改。

撬动未来的支点的专栏 1391

LeetCode 226. 翻转二叉树 | Python

使用递归、迭代的思路,解决 LeetCode《226. 翻转二叉树》问题

"大梦三千秋的博客 596

【Matlab 六自由度机器人】基于改进型D-H参数的运动学建模与蒙特卡洛工作空间分析

本文详细介绍了如何使用改进型D-H参数法为六自由度机器人建立运动学模型,并利用Matlab Robotics Toolbox实现正运动学计算与可视化。通过蒙特卡洛法对机器人工作空间进行分析,生成三维点云图以直观展示其可达范围,为机器人选型与任务规划提供关键依据。

weixin_29040367的博客 440

OD图 arcgis曲线制作插件 od图曲线 路径图曲线制作插件 航线图曲线制作插件

在ArcGIS 10.2 中导入节点数据,打开插件,选择输入起始节点和目标节点的节点文件Point,以Name字段(地名)为连接线的起始字段和目标字段,(Input Table File)选择连接关系表格SDLine.csv,(Origin Column 和 Destination Column)为起始节点和目标节点,(Output Path)为输出路径,应选择.gdb数据库路径,否则容易报错,(Chord Coefficient)为连线的曲率,数值越大,曲率越高。运行环境:ArcGIS10.2。...

JData_Engineer的博客 2670

递归 | 树:力扣226. 翻转二叉树

1、题目描述: 2、题解: 这个题用递归,也就是先递归翻转左子树,得到left;再递归翻转右子树,得到right。然后让根节点的左、右指针分别指向两个递归的结果,也就是:root.left = right,root.right=left. python实现: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.lef

weixin_42042056的博客 290

2026 最新安全 Skill 合集(CTF / 审计 / 渗透 / 红队)威胁建模一网打尽

2026年安全领域进入"Skill化"时代,各类安全能力被结构化封装为可复用的AI Skill。本文介绍了7个核心安全Skill项目:渗透测试全流程的AgentSkillsHub、CTF解题技能库ctfskills、多语言代码审计工具codeaudit、PHP专项审计系统、Java自动化审计流水线、威胁建模工具threatmodeling以及覆盖30+领域的Anthropic-Cybersecurity-Skills。这些项目将传统安全经验转化为标准化、可验证、可自动执行的模块化能力,支

Chengbei11的博客 1888

java获取LeetCode每日一题链接(全程分析)

用带指定的请求体的post请求即可得到带有力扣每日一题链接的一个json。

KyLen_Mou的博客 1664

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

力扣每日一题填坑系列——二叉树基础oj题合集

一些二叉树基础题

dtxew love c++ 6198

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

<每日一题 / 每日刷题>LeetCode题目汇总Ⅰ

今天在公司和同事聊起了算法题,首先感到惊讶的是公司里还有每天刷题的人,然后我和他交流了几道链表题的解法,感觉很愉快。 我想起了我真正接触到leetcode的那一天起,就迷上了解题,每天都抽出很多时间来学习数据结构与算法并且刷题。然而,后面要准备很多面试的知识,就停止了刷题…… 刷题的那段时光无疑是快乐的,那时候每天都能学到很多的新知识,专心刷题,进入专注状态,没有分心于简历和面试什么的。 看到同事刷了两百多道题,我突然又想重新开始刷题,至少每天一道。 文章目录2020-12-161.单词规律(每日一题)

lisz的博客 1593

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

leetcode每日一题:监控二叉树

原因是,如果有一种最优解是在叶子节点放置摄像头,那么我去掉这个摄像头,放置在这个叶子节点的父节点,监控到的范围会比在叶子节点的摄像头范围更广,明显是更优的做法。根据我们一开始贪心得到的逻辑,我们不可能在叶子节点放置摄像头,由于空节点可以看到是叶子节点的子节点,所以,我们把空节点状态定义成。如果左子节点或者右子节点有摄像头(排除掉某个子节点状态是0,上面已经讨论过了),此时当前节点会被这个子节点的摄像头监控到,当前节点的状态是。,那么当前节点必须放置摄像头,来监控这个状态为0的子节点,当前节点状态为。

破东风 1221

2024/3/12Leetcode每日一题(二叉树)

Python小白的Leetcode每日一题

qq_55974781的博客 1730

【LeetCode】9月 每日一题

leetcode 9月 每日一题

woodwhale的博客 1555

力扣每日一题(一)

突发奇想,想要在博客上记录一下做的会的力扣每一日一题,原因是,虽然每天会在小本本上记录一下,但是记得乱没有章法,回头不一定回仔细看,所以还是每周再汇总回顾一下,或许效果会更好。但是其中肯定也有很多我理解不是很透彻的地方,还有一些可能也只是记住了,不知道原因~但是,就学嘛

HchildD 874

『LeetCode|每日一题』---->二叉树剪枝

给定一个二叉树 根节点root,树的每个节点的值要么是 0,要么是 1。请剪除该二叉树中所有节点的值为 0 的子树。

weixin_51065489的博客 708

力扣每日一题——分列二叉树的最大乘积

核心解法是两次 DFS,第一次求整树总和,第二次遍历所有子树计算乘积并记录最大值。

qq_44693574的博客 516

【每日一题】力扣102 二叉树的层序遍历

前言 停更几个月了,发现自己的自律能力还是挺差的,所以现在我想到了一个新招:每日一题。很多博主都搞了这一系列,其实挺不错的,可以约束自己。后面多多指教啦! 文章目录题目解题思路代码(C++)总结 题目 题目链接:力扣102:二叉树的层序遍历 给你二叉树的根节点 root,返回其节点值的层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入:root =

倾心之作 1790

【Python】不同的二叉搜索树——力扣每日一题(三)(2020.07.15)

目录题目:96. 不同的二叉搜索树前置知识二叉搜索树笛卡尔积方法一:动态规划(DP) 题目:96. 不同的二叉搜索树 给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2

子浩的博客 1664

力扣每日一题(2023年7月)

力扣每日一题(2023年7月)

weixin_52341045的博客 832

力扣2月最后三天的每日一题

不会做,全靠灵神的视频讲解2867.统计树中的合法路径数目。

sRiddle的博客 606
上一篇: 力扣每日一题:203.移除链表元素 图解链表判断过程
下一篇: 力扣每日一题:102.二叉树的层序遍历 深度优先与广度优先双解!
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值