Given the root of a binary tree, return an array of the largest value in each row of the tree (0-indexed).
이진트리의 루트가 주어지고, 트리의 각 레벨의 가장 큰 값들을 담은 배열을 반환해라. ( 0부터 시작 )
해당 문제에서는 트리의 레벨 별로 특정한 값을 찾는 문제 이므로, 트리의 레벨별로 그래프를 순환하는 bfs를 사용하여 문제를 해결해 보자.
public List<Integer> largestValues(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
List<Integer> rst = new ArrayList<>();
if (root == null) { // Check Input is Null
return rst;
}
queue.add(root);
while (!queue.isEmpty()) { // Check by Tree Level
int size = queue.size();
int max = Integer.MIN_VALUE;
for (int i = 0; i < size; i++) { // Only Rotate Level Node
TreeNode temp = queue.poll();
if (temp.val > max) {
max = temp.val;
}
if (temp.right != null) {
queue.add(temp.right);
}
if (temp.left != null) {
queue.add(temp.left);
}
}
rst.add(max);
}
return rst;
}
'LeetCode' 카테고리의 다른 글
[Leetcode][Java] 70 Climbing Stairs ( 계단 오르기 ) (0) | 2021.04.20 |
---|---|
[Leetcode][Java] 529 Minesweeper ( 지뢰 찾기 ) (0) | 2021.04.19 |
[Leetcode][Java]513 Find Bottom Left Tree Value ( 트리의 가장 밑의 왼쪽 값 찾기 ) (0) | 2021.04.15 |
[Leetcode][Java]429 N-ary Tree Level Order Traversal ( N-ary 트리의 레벨 순서 순회 ) (0) | 2021.04.14 |
[Leetcode][Java] 1161 Maximum Level Sum of a Binary Tree ( 이진트리의 합이 가장 큰 레벨 ) (0) | 2021.04.09 |