0x00 题目
从上到下 按层
打印二叉树
同一层的节点按 从左到右
的顺序打印
每一层打印到一行
例如:
给定二叉树: [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
0x01 思路
这道题目主要是考查 层序
遍历
遍历的时候,保存每层的值即可
0x02 解法
语言:Swift
树节点:TreeNode
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
}
}
解法:
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
}
小编辑器
在线编程