力扣每日一题:102.二叉树的层序遍历 深度优先与广度优先双解!

YOLOv13-SWC (ShiftWise Convolution) 完整移植与原理深度解析教程 YOLOv13-SWC模型移植与原理解析 本文详细介绍了YOLOv13-SWC模型的完整移植过程与核心技术原理。YOLOv13-SWC在YOLOv8架构基础上引入ShiftWise Convolution(SWC)模块,通过创新性的位移操作、重参数化大核卷积和LoRA分解技术,显著提升了模型性能。文章包含三个核心部分: 模型移植实现:包括配置文件创建、任务模块修改和核心代码实现,重点介绍了SWC模块的掩码机制和LoRA卷积分解策略。 ShiftWise操作原理:深入解析了将大核卷积分解为小核卷积位移组合的数 阅读详情

102.二叉树的层序遍历

https://leetcode-cn.com/problems/binary-tree-level-order-traversal/solution/102er-cha-shu-de-ceng-xu-bian-li-shen-du-oqy7/

难度:中等

题目:

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。

示例:

示例:
二叉树:[3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回其层序遍历结果:

[
  [3],
  [9,20],
  [15,7]
]

分析

BFS 解题分析

对于二叉树的层序遍历,一般都是使用BFS配合队列完成解题。

  1. 使用队列保存每层的所有节点(初始先入队根节点)
  2. 每次讲队列中的元素循环出队,获取该元素对应的val值
  3. 再把每个元素的非空左右子节点进入队列
  4. 循环2、3,即可得到每层的遍历。

DFS 解题分析

二叉树的前、中、后 顺序遍历,一般最简单的是使用深度优先,但层序遍历也可以通过DFS来解题。

麻烦一些的就是我们需要在DFS层级遍历的时候,根据当前深度进行保存,这里由于返回列表,所以
使用defaultdict来构造特殊的Hash表更为快捷。由于字典的key值为深度,是存在默认排序的,
所以递归返程回放回即可。

下面来分别看看一下两种解题...

解题1 广度优先算法:

from collections import deque

class Solution:
    def levelOrder(self, root):
        ret = []
        queue = deque([root])
        while queue:
            tmp = []
            for i in range(len(queue)):
                point = queue.popleft()
                if point:
                    tmp.append(point.val)
                    queue.append(point.left)
                    queue.append(point.right)
            if tmp:
                ret.append(tmp) 
        return ret

解题2 深度优先算法:

from collections import defaultdict

class Solution:
    def levelOrder(self, root):
        ret = defaultdict(list)

        def dfs(base, level):
            nonlocal ret
            if base:
                ret[level].append(base.val)
                dfs(base.left, level + 1)
                dfs(base.right, level + 1)

        dfs(root, 0)
        return list(ret.values())

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

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

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

Python爬虫实战:全自动采集银行理财产品收益率数据 本文通过Playwright动态爬虫技术,成功实现了对银行理财产品收益率数据的实时采集,并通过 Pandas 数据清洗、SQLite 存储、调度自动化等模块,构建了一个可扩展的银行理财数据抓取系统。理财非儿戏,数据做决策。掌握银行收益信息是我们迈向理性投资的第一步。希望这套工具对你有所帮助! 阅读详情

相关推荐

BACnet/IP BBMD跨网段通信深度解析与最佳实践

本文介绍了在BACnet/IP网络中通过BBMD实现跨子网设备通信的关键配置方法。重点阐述了广播分发表(BDT)中掩码设置的重要性:使用子网掩码(255.255.255.0)会导致路由器拦截广播消息,而必须采用主机掩码(255.255.255.255)才能启用单播隧道机制,使BACnet广播消息封装为可路由的单播UDP包。文章详细说明了BDT条目的正确配置格式、BIP广播地址的作用,并提供了验证步骤,强调在跨网段场景中,正确设置掩码是确保设备发现和通信成功的关键因素。

零一架构师的专栏 1537

详解 二叉树 Binary Tree 的深度优先遍历和广度优先遍历

目录 一,构建二叉树 二、二叉树的遍历-深度优先遍历 三、层序遍历-广度优先遍历 四、总结 一,构建二叉树 二叉树是在计算机中非常常用的一种数据结构。二叉树中每个节点最多只能有两个子节点。 很多时候我们要对整个树进行遍历,遍历操作不仅仅是对二叉树有意义,其他所有的树都可能要进行遍历操作,另外图型数据结构中遍历也是一个非常常规的操作。在这里可以通过二叉树的遍历来体会一下遍历这种操作。 一颗二叉树的基本代码如下。 /** * 二叉树 * */ public class BST&lt

bluebiy的专栏 803

通用定时器脉冲计数实验(STM32CubeMx配置)

通用定时器脉冲计数实验

a1169511636的博客 5510

广度优先搜索BFS:力扣102. 二叉树的层序遍历

1、题目描述: 2、题解: BFS 在处理每一层时,一口气处理完。 python代码: class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: # BFS res = [] if not root: return res queue = collections.deque() queue.append

weixin_42042056的博客 353

echarts如何实现3D饼图(环形图)?

自定义修改3D饼图的宽高和legend

i-cat的博客 1万+

TC3xx芯片SPI多从机通信避坑指南:AUTOSAR框架下的DMA配置与片选切换

本文针对英飞凌TC3xx芯片在AUTOSAR框架下实现SPI多从机通信的实战难题,提供了详尽的避坑指南。重点解析了如何利用硬件支持的16路片选(SLSO)灵活切换,在AUTOSAR中正确配置不同时序的从设备,并深入探讨了异步模式下DMA的启用条件与关键配置细节,帮助开发者规避通信失败风险,提升系统可靠性。

nn3456的博客 153

力扣 102 二叉树的层序遍历【广度优先遍历】

力扣 102 二叉树的层序遍历【广度优先遍历】 文章目录力扣 102 二叉树的层序遍历【广度优先遍历】全部刷题与学习记录原题目考查知识点自己的第一遍解法 全部刷题与学习记录 【C++刷题学习笔记目录】 【C++百万并发网络通信-笔记目录】 原题目 题目地址:102. 二叉树的层序遍历 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \

日月既往,不可复追 507

eNSP常见故障处理

eNSP无法启动设备一直停在#井号的问题的解决方案?

lvshiliang123的博客 2万+

LeetCode 102and107 Python

二叉树的层次遍历(广度优先搜索) 20 / \ 12 22 / / \ 3 21 25 / \ 33 也就是说这样一棵树遍历的结果为: 第一种结果: [ [33], [3, 21, 25], [12, 22], [20] ] 第二种结果: [...

fenglei0415的博客 575

Python爬虫:爬取健身平台运动数据(跑步、骑行轨迹)

通过分析这些运动数据,用户能够了解自己的运动趋势、运动成绩,并作出相应的调整。通过使用Strava的API,我们成功地获取了用户的运动活动信息和运动轨迹数据,并进行了存储与可视化。Strava的API提供了丰富的数据接口,能够通过OAuth2认证获取用户的运动数据,包括历史数据、运动轨迹等信息。Strava的API还提供了获取活动轨迹数据的接口,返回的数据格式通常是GeoJSON格式,适用于地图可视化。随着大数据技术的发展,运动数据的分析和可视化为个人健康管理、运动训练计划的优化等提供了强大的支持。

2201_76125261的博客 1076

【力扣日记】102 二叉树的层次遍历 | 513、1161 | 广度优先搜索

题目描述 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如:给定二叉树: [3,9,20,null,null,15,7] 返回结果:[ [3], [9,20], [15,7]] 算法思路 迭代。逐层遍历树。 class Solution: def levelOrder(self, root: TreeNode): if not r...

Heart_for_Ling的博客 462

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LeetCode(力扣) 102题:二叉树的层序遍历----广度优先搜索(BFS)求解附带详细注释

题目描述 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例 输入:二叉树:[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 输出返回其层序遍历结果: [ [3], [9,20], [15,7] ] 思路分析 题意是让我们按照层序从左到右的顺序对二叉树进行遍历。层序遍历,是从两个维度上来讲。第一为深度,我们必须要到达二叉树的最大深度才能对其完成遍历;第二为广度,我们

Just_do_myself的博客 534

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

力扣每日一题:852.山脉数组的峰顶索引 喜迎收假,重拳出击....

852.山脉数组的峰顶索引 https://leetcode-cn.com/problems/peak-index-in-a-mountain-array/solution/852shan-mai-shu-zu-de-feng-ding-suo-yin-9krsr/ 难度:简单 题目: 符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 <...

清风Python 5872

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

刷穿剑指offer-Day21-队列II 使用队列实现广度优先搜索!

昨日回顾 昨天,我们介绍了队列的基础知识,并分别学习了Python与Java中队列的操作方法。 在此基础上,通过两道简单的队列题,掌握了基本的入队与出队操作。然而,队列的题目可不只是简单按照顺序出入队那么简单。 队列有一个最为经典的使用方式,就是 广度优先搜索( BFS) 。而广度优先搜索中,又数二叉树的遍历更为常用。今天我们就通过几道二叉树的题目,来掌握广度优先搜索的使用。 二叉树什么时候该使用...

清风Python 4943

教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!

开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊。再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了。 不过忙活一阵子还是有些收获的,减肥13斤,刷题80道+,虽然算法还在彩笔的边缘疯狂挣扎(然后挣扎不出去),但起码比之前要好很多了周赛四道题,一道简单和两道中等基本都可以AC,只是有时会第二道中等完成时考...

清风Python 3715

实用算法题:excel表列序号与十进制数字的互相转化算法讲解!

日常生活中excel的使用大家都不陌生,可能几列的表格我们还能脑海中参照A-Z来区分对应的数字应该是几。但有的表格列过多,或者鼠标一甩到了很后面的位置,好几个字母拼起来,一时间很难反映过来对应的数字是多少列。所以今天力扣这两道算法题,就帮我们解决了这个问题。当然近半年的这两题的出题公司有: 微软 6次 Shopee 3次 苹果 2次 高盛 2次 额,居然没有国内大厂?是要把excel换成W...

清风Python 1707

来和我一起四十天刷完 剑指offer II-专项突破!

写在前面的话 最近公众号断更了,嗯...不是因为懒,而是一直在用Python刷算法题感觉有些腻了,打算捡起许久不用的Java,学学Java基础,然后使用Java、Python双语言进行leetcode刷题学习。 本来打算复习完Java面向对象知识后,把所有涉及算法的数据结构与知识都学习完再开始继续更新的,但前天看到了新版本的剑指offer II-专项突破版这本书,这次的剑指offer第二版使用Ja...

清风Python 1290

力扣每日一题:496、503、739 单调栈问题三连发!

496.下一个更大元素I https://leetcode-cn.com/problems/next-greater-element-i/solution/496xia-yi-ge-geng-da-yuan-su-i-by-qingfe-qfu9/ 难度:简单 题目: 给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。 请你找出 nums1 ...

清风Python 907

分享一个翻倍提升算法刷题通过率的技巧

2021年的学习目标 年初制定的21年学习计划中,将算法之美加入了今年的重点内容。模仿万达老王的语气,先给自己制定一个小目标,年底前力扣刷题300+。只要坚持leetcode每日一题满勤,这个小目标基本就可以达成了。 之前其实是比较讨厌算法的,枯燥无趣、费时费脑,但没办法,算法已经成为各大公司面试必考的内容,只能硬着头皮刷题了。 在算法方面,个人觉得当前的水平大概就是,站在彩笔儿子的边缘疯狂突击,...

清风Python 821

670.最大交换 暴力、单调栈、指针的逆序遍历 三种解题思路。

力扣每日一题

清风Python 774

刷穿剑指offer-Day15-哈希表II Python&Java的哈希表方法与解题套路!

昨日回顾 昨天我们开始了哈希表的学习,讲解了哈希表的集中实现方式。并通过一道 设计哈希集合 的题目,让我们将哈希表的理论转化为实践。 今天,我们就开始正式学习哈希表在Python与Java中的使用方式。在Java中,哈希表有两个数据类型 HashMap 与 HashSet,它们对应Python中的 dict 与 set ,下面我们开始分类学习! HashSet & set 我们在昨天的设计...

清风Python 747

python 两个栈实现一个队列 && 两个队列实现一个栈

剑指Offer09.用两个栈实现队列 https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/solution/jian-zhi-offer09yong-liang-ge-zhan-shi-x-hybm/ 难度:简单 题目: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail...

清风Python 691

刷穿剑指offer-Day02-整数II

昨日回顾 昨天作为这个系列的第一篇文章,分别介绍了Java与Python的以下内容: 整数类型与考点 二进制与十进制的转换 与、或、异或的操作 位移操作 以上内容,如果遗忘了,一定要定时复习啊...今天是整数的第二篇文章,会和大家稍有跳跃分享一道简单题+一道中等题目,用来对二进制算法完成进一步的巩固。 每道题涉及的知识点会在题目分析中给出整理。让我们开始吧! 剑指OfferII002.二进制加...

清风Python 687

力扣每日一题:5705. 判断国际象棋棋盘中一个格子的颜色 深度剖析思路!

5705. 判断国际象棋棋盘中一个格子的颜色 难度:简单 题目: 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。 给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。 示例: 示例 1: 输入:coo...

清风Python 686

力扣每日一题:692.前K个高频单词 Python双解,包教包会!

692.前K个高频单词 难度:中等 题目: 给一非空的单词列表,返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。 注意: 假定 k 总为有效值, 1 ≤ k ≤ 集合元素数。 输入的单词均由小写字母组成。 示例: 示例 1: 输入: ["i", "love", "leetcode", "i", "love", "...

清风Python 659
上一篇: 力扣每日一题:226、111、112 二叉树三连发!
下一篇: 力扣每日一题:278.第一个错误的版本 欢度端午的二分水题!
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值