0. 문제
https://leetcode.com/problems/binary-tree-right-side-view/?envType=study-plan-v2&envId=top-interview-150
1. 문제 설명
- BST의 루트가 주어지면 오른쪽에서 트리를 바라봤을 때 보이는 노드를 출력하시오.
2. 문제 풀이
2.1. 접근법
- BFS를 사용해서 모든 트리를 탐색한다.
- 탐색 시 오른쪽에서 왼쪽 노드로 탐색한다.
- 탐색이 끝나면 값을 리스트에 담는다.
3. 코드
class Solution {
public List<Integer> rightSideView(TreeNode root) {
Queue<TreeNode> q = new LinkedList<>();
List<Integer> ans = new ArrayList<>();
if(root == null) return ans;
q.add(root);
while(!q.isEmpty()) {
int size = q.size();
TreeNode tmp = null;
for (int i = 0; i < size; i++) {
tmp = q.poll();
if (tmp.left != null) q.add(tmp.left);
if (tmp.right != null) q.add(tmp.right);
}
ans.add(tmp.val);
}
return ans;
}
}
4. 결과