LeetCode 문제 102. Binary Tree Level Order Traversal 자바스크립트 풀이
- LeetCode 102번 'Binary Tree Level Order Traversal' 문제를 자바스크립트로 해결하며, 재귀를 활용한 깊이 우선 탐색(DFS) 방식을 사용한다. 🌲
- 이전에 큐를 사용한 너비 우선 탐색(BFS)으로 풀었던 문제이지만, 자바스크립트에서 큐를 직접 지원하지 않아 DFS로 접근한다. 💡
- 목표는 트리의 각 레벨에 있는 노드 값들을 별도의 배열에 담아, 이 배열들을 다시 묶은 2차원 배열을 반환하는 것이다. 📊
- DFS 재귀 함수는 현재 노드와 해당 노드의 '레벨'을 인자로 받아, 결과 2차원 배열의
level 인덱스에 노드 값을 추가한다. 📍
- 결과 배열(
valuesByLevel)의 특정 level 인덱스에 아직 배열이 없다면, 빈 배열을 먼저 생성한 후 노드 값을 push한다. ➕
- 재귀 호출은 현재 노드의 왼쪽 자식과 오른쪽 자식에 대해
level을 1 증가시켜 dfs 함수를 다시 호출하는 방식으로 이루어진다. ⬆️
- 입력 루트 노드가
null인 경우, 빈 배열을 즉시 반환하여 예외 처리한다. 🛑
- 이 풀이의 시간 복잡도는 모든 노드를 한 번씩 방문하므로 O(N)이다. ⏱️
- 공간 복잡도는 재귀 호출 스택의 깊이에 비례하며, 트리가 한쪽으로 편향된 최악의 경우 O(N)이 된다. 🧠
데브허브 | DEVHUB | LeetCode 문제 102. Binary Tree Level Order Traversal 자바스크립트 풀이