노드를 탐색하면 되는 문제이다.
별 다른 어려움 없이 해당 노드가 있는 깊이를 파악한 후 해당 인덱스의 배열에 담아 반환하면 됨
깊이 우선 탐색의 개념을 이해하면 충분히 풀이가 가능할 것 같다.
/**
* Definition for a binary tree node.
* class TreeNode {
* val: number
* left: TreeNode | null
* right: TreeNode | null
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
* }
*/
function levelOrder(root: TreeNode | null): number[][] {
// TreeNode가 저장될 배열
const result = [];
// level: 해당 노드가 존재하는 위치
// node: 해당 노드
function dfs(level: number, node: TreeNode | null) {
if(!node) return;
if(!result[level]) result[level] = []
result[level] = [...result[level], node.val]
dfs(level + 1, node.left)
dfs(level + 1, node.right)
}
dfs(0, root)
return result
};