199. 二叉树的右视图

题目

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

示例 1:

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

示例 2:

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

示例 3:

1
2
输入: []
输出: []

提示:

二叉树的节点个数的范围是 [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
25
26
27
28
private static class Solution {
public List<Integer> rightSideView(TreeNode root) {
if (root == null) {
return new ArrayList<>();
}
List<Integer> res = new LinkedList<>();
ArrayDeque<TreeNode> deque = new ArrayDeque<>();
deque.push(root);

while (!deque.isEmpty()) {
int size = deque.size();
int index = 0;
for (int i = 0; i < size; i++) {
TreeNode node = deque.poll();
if (i == size - 1) {
res.add(node.val);
}
if (node.left != null) {
deque.addLast(node.left);
}
if (node.right != null) {
deque.addLast(node.right);
}
}
}
return res;
}
}