0x00 题目
从上到下 按层 打印二叉树
同一层的节点按 从左到右 的顺序打印
每一层打印到一行
例如:
给定二叉树: [3,9,20,null,null,15,7]
- <code> 3
- / \
- 9 20
- / \
- 15 7
复制代码
返回其层次遍历结果:
- <code>[
- [3],
- [9,20],
- [15,7]
- ]
复制代码
0x01 思路
这道题目主要是考查 层序 遍历
遍历的时候,保存每层的值即可
0x02 解法
语言:Swift
树节点:TreeNode
- <code>public class TreeNode {
- public var val: Int
- public var left: TreeNode?
- public var right: TreeNode?
- public init() { self.val = 0; self.left = nil; self.right = nil; }
- public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
- public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
- self.val = val
- self.left = left
- self.right = right
- }
- }
复制代码
解法:
- <code>func levelOrder(_ root: TreeNode?) -> [[Int]] {
- guard let root = root else { return [] }
-
- // 保存结果
- var array: [[Int]] = []
-
- // 保存每层节点
- var queue: [TreeNode] = []
- queue.append(root)
- while !queue.isEmpty {
- var res = [Int]()
- var temp = [TreeNode]()
- while !queue.isEmpty {
- // 获取当前节点值
- let node = queue.removeFirst()
- res.append(node.val)
-
- // 获取下层节点
- if let left = node.left {
- temp.append(left)
- }
- if let right = node.right {
- temp.append(right)
- }
- }
-
- // 切换到下一层
- queue = temp
-
- // 保存结果
- array.append(res)
- }
- return array
- }
复制代码
小编辑器
在线编程

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