199. Binary Tree Right Side View
Given the root of a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.
root 노드전략 1. 재귀적 방법
rightSideView와 왼쪽 노드의 rightSideView를 가져옴rightSideView - 왼쪽 노드의 rightSideView 일부)를 반환함rightSideView 일부 : 오른쪽 노드의 rightSideView보다 길 때, 긴 만큼의 뒷부분만을 넣음전략 2. Queue를 이용
root 노드를 넣음rightValues에 넣음class Solution {
public List<Integer> rightSideView(TreeNode root) {
if (root == null) {
return List.of();
}
List<Integer> left = rightSideView(root.left);
List<Integer> right = rightSideView(root.right);
List<Integer> answer = new ArrayList<>();
answer.add(root.val);
answer.addAll(right);
for (int i = right.size(); i < left.size(); i++) {
answer.add(left.get(i));
}
return answer;
}
}

class Solution {
public List<Integer> rightSideView(TreeNode root) {
if (root == null) {
return List.of();
}
List<Integer> rightValues = new LinkedList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (queue.size() > 0) {
int count = queue.size();
for (int i = 0; i < count; i++) {
TreeNode node = queue.poll();
if (i == 0) { rightValues.add(node.val); }
if (node.right != null) { queue.add(node.right); }
if (node.left != null) { queue.add(node.left); }
}
}
return rightValues;
}
}
