LeetCode-199.二叉树的右视图

题目描述

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例1

1
2
输入: [1,2,3,null,5,null,4]
输出: [1,3,4]

示例2

1
2
输入: [1,null,3]
输出: [1,3]

提示:

  • 二叉树的节点个数的范围是 [0,100]
  • -100 <= Node.val <= 100

题解

借助层序遍历,每遍历一层,将最后一个节点的值放到结果数组中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
func rightSideView(_ root: TreeNode?) -> [Int] {
guard let root = root else {
return []
}
var res = [Int]()
var queue = [root]
var cur: TreeNode? = nil
while !queue.isEmpty {
var count = queue.count
while count > 0 {
cur = queue.removeFirst()
if let left = cur?.left {
queue.append(left)
}
if let right = cur?.right {
queue.append(right)
}
count -= 1
}
res.append(cur!.val)
}

return res
}