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

LeetCode102题:二叉树的层序遍历(python3)

在这里插入图片描述
代码思路:使用队列先进先出的特性,queue[]不为空进入for循环,tmp存储每层的节点,将结果添加至res[]中。
python中使用collections中的双端队列deque(),其popleft()方法可达到O(1)时间复杂度。

class Solution:def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:if not root:return[]res,queue = [],collections.deque()queue.append(root)while queue:tmp = []for _ in range(len(queue)): #len(queue)的长度不为null就进入循环node = queue.popleft()tmp.append(node.val)if node.left:queue.append(node.left)if node.right:queue.append(node.right)  res.append(tmp)return res

列表的方法一般只支持尾部,例如pop、append,但是对于一些队列问题,需要在头部操作,则需要使用pop(0)、insert(0,x)等方法,不太方便,Python的collections包中的双端队列deque很好地解决了这个问题,增加了头部方法popleft、appendleft等。

from collections import dequealist=['a','b','c','d']
dq=deque(alist)
print(dq.pop())
print(dq.popleft())
print(dq)
dq.appendleft('e')
print(dq)
d
a
deque(['b', 'c'])
deque(['e', 'b', 'c'])
http://www.lryc.cn/news/316756.html

相关文章:

  • linux服务器保存git账号密码命令
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的田间杂草检测系统(深度学习模型+UI界面+Python代码+训练数据集)
  • java Lambda表达式如何支持静态方法引用
  • SpringMVC04、Controller 及 RestFul
  • 【机器学习300问】33、决策树是如何进行特征选择的?
  • 剑指offer C ++双栈实现队列
  • 【YOLOv9】训练模型权重 YOLOv9.pt 重新参数化轻量转为 YOLOv9-converted.pt
  • Zookeeper搭建
  • 2.Datax数据同步之Windows下,mysql和sqlserver之间的自定义sql文数据同步
  • commonjs和esmodule
  • Android的编译系统
  • Midjourney指控Stability AI夜袭数据,网络风波一触即发
  • JVM知识整体学习
  • 蓝桥杯--日期统计
  • [leetcode~dfs]1261. 在受污染的二叉树中查找元素
  • PyQt5使用
  • 利用GPT开发应用005:Codex、Turbo、ChatGPT、GPT-4
  • 制造行业大数据应用:四大领域驱动产业升级与智慧发展
  • 25.5 MySQL 聚合函数
  • 多维时序 | Matlab实现VMD-CNN-LSTM变分模态分解结合卷积神经网络结合长短期记忆神经网络多变量时间序列预测
  • 用Python进行机器学习:Scikit-learn的入门与实践【第126篇—Scikit-learn的入门】
  • 2024年G3锅炉水处理证模拟考试题库及G3锅炉水处理理论考试试题
  • 常用的gpt网站
  • java中string类型常用的37个函数
  • 【JVM】字节码指令 getstatic
  • P1179 [NOIP2010 普及组] 数字统计
  • 使用Java的等待/通知机制实现一个简单的阻塞队列
  • linux kernel物理内存概述(七)
  • 【C#】.net core 6.0 使用第三方日志插件Log4net,日志输出到控制台或者文本文档
  • TSINGSEE青犀煤矿矿井视频监控与汇聚融合管理视频监管平台建设方案