Binary Tree Right Side View - LeetCode
주어진 이진 트리의 루트 노드를 오른쪽에서 볼 때, 상단부터 하단까지 볼 수 있는 노드의 값을 반환합니다.
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.
Example 1:
Input: root = [1,2,3,null,5,null,4]
Output: [1,3,4]
Example 2:
Input: root = [1,null,3]
Output: [1,3]
Example 3:
Input: root = []
Output: []
문제 요약:
주어진 이진 트리에서 오른쪽에서 가장 오른쪽에 위치한 노드를 상단부터 하단까지 차례로 나열한 리스트를 반환하는 문제입니다.
풀이 과정: DFS
class Solution {
public List<Integer> rightSideView(TreeNode root) {
ArrayList<Integer> retList = new ArrayList<>();
dfs(root, retList, 0);
return retList;
}
private void dfs(TreeNode node, List<Integer> retList, int level){
if(node == null) return;
if(level == retList.size()){
retList.add(node.val);
}
dfs(node.right, retList, level +1);
dfs(node.left, retList, level +1);
}
}
풀이 과정: BFS
class Solution {
public List<Integer> rightSideView(TreeNode root) {
ArrayList<Integer> retList = new ArrayList<>();
if(root == null) return retList;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int levelDept = queue.size();
TreeNode rightNode = null;
for(int i = 0; i < levelDept ; i++){
TreeNode node = queue.poll();
rightNode = node;
if(node.left != null) queue.offer(node.left);
if(node.right != null) queue.offer(node.right);
}
retList.add(rightNode.val);
}
return retList;
}
}
700. Search in a Binary Search Tree (0) | 2023.10.29 |
---|---|
1161. Maximum Level Sum of a Binary Tree (0) | 2023.10.29 |
1207. Unique Number of Occurrences (0) | 2023.10.29 |
2215. Find the Difference of Two Arrays (0) | 2023.10.29 |
1448. Count Good Nodes in Binary Tree (0) | 2023.10.26 |