Problem
이진 트리에서 같은 높이에 있는 노드들의 값을 묶는 문제입니다.
왼쪽에서 오른쪽 순서로 넣어야 합니다.
Solution
단순하게 DFS 로 해결하면 됩니다.
값을 담을 list
를 선언하고 왼쪽부터 차례대로 들어갑니다.
level
변수로 높이를 계속 갖고 들어가며 list.size()
가 level
과 같다면 새롭게 만난 높이이기 때문에 리스트를 추가해줍니다.
Java Code
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
traverse(res, root, 0);
return res;
}
private void traverse(List<List<Integer>> list, TreeNode node, int level) {
if (node == null) return;
if (level == list.size()) {
list.add(new ArrayList<>());
}
list.get(level).add(node.val);
traverse(list, node.left, level + 1);
traverse(list, node.right, level + 1);
}
}
'알고리즘 문제 > LeetCode' 카테고리의 다른 글
[LeetCode Easy] Last Stone Weight (Java) (0) | 2021.04.01 |
---|---|
[LeetCode Easy] Maximum Number of Balloons (Java) (0) | 2021.03.31 |
[LeetCode Medium] Game of Life (Java) (0) | 2021.01.03 |
[LeetCode Medium] Odd Even Linked List (Java) (0) | 2021.01.03 |
[LeetCode Medium] Find the Duplicate Number (Java) (0) | 2021.01.02 |