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

LeetCode102:二叉树层序遍历详解(附图解)

题目LeetCode102给你二叉树的根节点root返回其节点值的层序遍历。 即逐层地从左到右访问所有节点。输入root [3,9,20,null,null,15,7]输出[[3],[9,20],[15,7]]Python解法代码示例广度优先搜索from collections import deque from typing import List, Optional # Definition for a binary tree node. class TreeNode: def __init__(self, val0, leftNone, rightNone): self.val val self.left left self.right right class Solution: def levelOrder(self, root: Optional[TreeNode]) - List[List[int]]: if not root: return [] res [] q deque([root]) # 队列初始[3] while q: # 只要队列不为空 level [] size len(q) # 记录当前层有多少节点 for _ in range(size): node q.popleft() # 取出队首 level.append(node.val) if node.left: q.append(node.left) if node.right: q.append(node.right) res.append(level) return res过程展示Java解法代码示例广度优先搜索import java.util.List; import java.util.ArrayList; import java.util.Queue; import java.util.LinkedList; class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val val; this.left left; this.right right; } } class Solution { public ListListInteger levelOrder(TreeNode root) { ListListInteger res new ArrayList(); if (root null) return res; QueueTreeNode queue new LinkedList(); queue.offer(root); while (!queue.isEmpty()) { ListInteger level new ArrayList(); int size queue.size(); for (int i 0; i size; i) { TreeNode node queue.poll(); level.add(node.val); if (node.left ! null) queue.offer(node.left); if (node.right ! null) queue.offer(node.right); } res.add(level); } return res; } }C解法代码示例广度优先搜索#include vector #include queue using namespace std; // 二叉树节点定义 struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} }; class Solution { public: vectorvectorint levelOrder(TreeNode* root) { vectorvectorint res; if (!root) return res; queueTreeNode* q; q.push(root); while (!q.empty()) { vectorint level; int size q.size(); for (int i 0; i size; i) { TreeNode* node q.front(); q.pop(); level.push_back(node-val); if (node-left) q.push(node-left); if (node-right) q.push(node-right); } res.push_back(level); } return res; } };
http://www.gsyq.cn/news/1299279.html

相关文章:

  • ElevenLabs语音克隆工业级部署方案:Kubernetes集群调度+ONNX Runtime量化加速+声纹密钥HSM硬件绑定(金融级SLA保障)
  • 告别内存溢出:用SAX事件驱动模式高效解析海量Excel数据实战
  • 内容执行创新正交组合闭集
  • Java——定时任务
  • 555定时器深度解析:从RC电路到三种工作模式的原理与应用
  • 终极虚拟显示器解决方案:ParsecVDisplay完全指南
  • Harness 中的请求标识染色:端到端追踪
  • AI Agent在科学研究中的辅助作用
  • 模块六-数据合并与连接——32. merge 合并(上)
  • 中国人工智能培训网—AI系列录播课#大模型#智能体#关键能力#提示词
  • 免费开源鼠标连点器MouseClick:解放双手的终极效率工具
  • 从FAST-LIO2的代码里,我学到的5个C++工程实践技巧(附ikd-Tree源码分析)
  • 电镀整流机生产厂家选择:靠谱供应商评估维度深度解析
  • 用自然语言控制你的电脑:UI-TARS桌面AI助手完全指南
  • 基于Feather RP2040与CircuitPython的CNC旋钮宏键盘DIY指南
  • BeagleBone Black设备树覆盖层实战:从原理到自定义SPI/UART配置
  • 基于LPC55S69与墨水屏的低功耗桌面气象站开发全解析
  • 【限时技术解禁】ElevenLabs马拉雅拉姆文隐藏参数曝光:--voice_stability=0.37与--style_expansion=1.85的真实效用(实测WER降低22.6%)
  • LangGraph Agent 开发指南(10~子图 Subgraphs)
  • 命令行知识管理工具brain-cli:极简设计助力开发者高效管理碎片信息
  • Unity强化学习控制器:游戏AI开发实战指南
  • 企业级应用如何通过 Taotoken 统一管理多个团队的模型调用
  • 终极指南:用yt-dlp-gui轻松搞定Windows视频下载,3步搞定高清视频
  • 5G NR里的LDPC参数怎么选?一个6144比特数据块的实战推演
  • Linux驱动开发:原子操作实现LED设备互斥访问
  • Linux系统下Vue开发环境搭建:从Node.js到Vite的完整指南
  • ElevenLabs阿拉伯文语音生成失效真相(方言适配盲区大起底)
  • 构建开源图像生成模型与OpenAI API的标准化桥梁
  • 二分查找60-65
  • 从零构建生成式AI应用:四层学习框架与RAG实战指南