• 售前

  • 售后

热门帖子
入门百科

【二叉树】从上到下打印二叉树 II

[复制链接]
小雨粑粑2012 显示全部楼层 发表于 2022-1-12 18:34:23 |阅读模式 打印 上一主题 下一主题
0x00 题目

从上到下 按层 打印二叉树
同一层的节点按 从左到右 的顺序打印
每一层打印到一行
例如:
给定二叉树: [3,9,20,null,null,15,7]
  1. <code>    3
  2.    / \
  3.   9  20
  4.      / \
  5.    15   7
复制代码
返回其层次遍历结果:
  1. <code>[
  2. [3],
  3. [9,20],
  4. [15,7]
  5. ]
复制代码

0x01 思路

这道题目主要是考查 层序 遍历
遍历的时候,保存每层的值即可

0x02 解法

语言:Swift
树节点:TreeNode
  1. <code>public class TreeNode {
  2.     public var val: Int
  3.     public var left: TreeNode?
  4.     public var right: TreeNode?
  5.     public init() { self.val = 0; self.left = nil; self.right = nil; }
  6.     public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
  7.     public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
  8.         self.val = val
  9.         self.left = left
  10.         self.right = right
  11.     }
  12. }
复制代码
解法:
  1. <code>func levelOrder(_ root: TreeNode?) -> [[Int]] {
  2.     guard let root = root else { return [] }
  3.    
  4.     // 保存结果
  5.     var array: [[Int]] = []
  6.    
  7.     // 保存每层节点
  8.     var queue: [TreeNode] = []
  9.     queue.append(root)
  10.     while !queue.isEmpty {
  11.         var res = [Int]()
  12.         var temp = [TreeNode]()
  13.         while !queue.isEmpty {
  14.             // 获取当前节点值
  15.             let node = queue.removeFirst()
  16.             res.append(node.val)
  17.             
  18.             // 获取下层节点
  19.             if let left = node.left {
  20.                 temp.append(left)
  21.             }
  22.             if let right = node.right {
  23.                 temp.append(right)
  24.             }
  25.         }
  26.         
  27.         // 切换到下一层
  28.         queue = temp
  29.         
  30.         // 保存结果
  31.         array.append(res)
  32.     }
  33.     return array
  34. }
复制代码

小编辑器

在线编程



来源:https://blog.caogenba.net/xjh093/article/details/122426048
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作