BFS, 큐 사용해서 순회하되 각 레벨의 마지막 원소만 result List에 add하면 될 것 같다.
즉 while문이 한 번 돌 때마다 que에서 가장 마지막에 있는 것만 넣으면 된다.
처음에는 아예 자식 중 맨 오른쪽 원소만 que에 넣는 방식으로 했었는데
그럼 left로 이어지는 케이스는 다루지 못한다. 생각을 깊게 하자
요약
i == queSize - 1
이면 큐의 마지막 원소
class Solution {
public List<Integer> rightSideView(TreeNode root) {
List<Integer> result = new ArrayList<>();
if (root == null) {
return result;
}
Queue<TreeNode> que = new LinkedList<>();
que.offer(root);
while (!que.isEmpty()) {
int queSize = que.size();
for (int i=0; i<queSize; i++) {
TreeNode current = que.poll();
if (i == queSize - 1) {
result.add(current.val);
}
if (current.left != null) {
que.offer(current.left);
}
if (current.right != null) {
que.offer(current.right);
}
}
}
return result;
}
}