1public List<Integer> rightSideView(TreeNode root) {
2 List<Integer> result = new ArrayList<>();
3
4 if (root == null) {
5 return result;
6 }
7
8 Queue<TreeNode> queue = new LinkedList<>();
9 queue.offer(root);
10
11 while (!queue.isEmpty()) {
12 int levelSize = queue.size();
13 TreeNode rightmostNode = null;
14
15 for (int i = 0; i < levelSize; i++) {
16 TreeNode node = queue.poll();
17 rightmostNode = node;
18
19 if (node.left != null) {
20 queue.offer(node.left);
21 }
22 if (node.right != null) {
23 queue.offer(node.right);
24 }
25 }
26
27 result.add(rightmostNode.val);
28 }
29
30 return result;
31}