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;
}
}