102. Binary Tree Level Order Traversal

2025. 10. 11. 19:37·Coding Test/LeetCode
  • 난이도: 중간(Medium)
  • 링크: LeetCode 102
  • 풀이날짜: 2025/10/10

1. 문제 이해

 

이 문제는 이진 트리의 각 레벨별 노드 값을 배열 형태로 반환하는 문제로,

루트부터 시작해서 같은 깊이에 있는 노드들을 왼쪽에서 오른쪽 순서로 묶어서 리턴해야 한다.


2. 접근 방식 및 자료 구조

레벨 단위로 탐색하기 위해 BFS(너비 우선 탐색) 을 사용한다.

BFS는 큐(Queue)를 활용해 트리를 한 레벨씩 순서대로 순회하기에 적합하므로,

  • 큐에 노드를 넣고,
  • 같은 레벨의 노드들을 for문으로 순회하면서 group 배열에 담고,
  • 자식 노드는 다음 탐색을 위해 다시 큐에 추가

하는 구조를 이용한다.


3. 시간 및 공간 복잡도

  • 시간 복잡도: O(n) → 모든 노드를 한 번씩 방문
  • 공간 복잡도: O(n) → 큐에 최대 한 레벨의 모든 노드가 저장될 수 있음

4. DFS 풀이

var levelOrder = function(root) {
  if (!root) return [];

  const result = [];
  const queue = [root];

  while (queue.length > 0) {
    const len = queue.length;
    const group = [];

    for (let i = 0; i < len; i++) {
      const node = queue.shift();
      group.push(node.val);

      // 자식 노드를 큐에 추가 (다음 레벨 탐색용)
      if (node.left) queue.push(node.left);
      if (node.right) queue.push(node.right);
    }

    // 한 레벨 탐색이 끝나면 결과에 추가
    result.push(group);
  }

  return result;
};

 

정리

BFS로 각 레벨의 노드를 순서대로 방문하면서,

각 레벨이 끝날 때마다 하나의 배열로 묶어서 결과에 추가한다.

 

이 방식은 트리의 구조를 레벨 단위로 그대로 출력하기 때문에,

트리 탐색 문제 중에서도 가장 전형적인 BFS 활용 예시라고 할 수 있다.

'Coding Test > LeetCode' 카테고리의 다른 글

103. Binary Tree Zigzag Level Order Traversal  (0) 2025.10.11
637. Average of Levels in Binary Tree  (0) 2025.10.09
199. Binary Tree Right Side View  (0) 2025.10.09
'Coding Test/LeetCode' 카테고리의 다른 글
  • 103. Binary Tree Zigzag Level Order Traversal
  • 637. Average of Levels in Binary Tree
  • 199. Binary Tree Right Side View
JTB
JTB
웹/앱 개발 정보를 공유하고 있습니다.
  • JTB
    JTechBlog
    JTB
  • 전체
    오늘
    어제
    • All About Programming;) N
      • Computer Science
        • Terminology and Concepts
        • Network
        • Operating System
        • Database
        • Data Structure
      • Frontend N
        • Javascript Essentials N
        • Perfomance Optimization
        • JS Patterns
        • Next.js
        • Flutter
        • Testing
      • Backend
        • Node.js
      • DevOps
        • Docker & Kubernetes
      • Coding Test N
        • LeetCode N
        • Programmers
      • Tech Books & Lectures
        • Javascript_Modern JS Deep d..
        • Network_IT 엔지니어를 위한 네트워크 입문
      • Projects
        • PolyLingo_2025
        • Build Your Body_2024
        • JStargram_2021
        • Covid19 Tracker_2021
        • JPortfolio_2021
      • BootCamp_Codestates
        • TIL
        • TILookCloser
        • Pre Tech Blog
        • IM Tech Blog
        • Daily Issues and DeBugging
        • First Project
        • Final Project
        • Sprint Review
        • Good to Know
        • Socrative Review
        • HTML &amp; CSS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 글쓰기
    • 관리
  • 공지사항

  • 인기 글

  • 태그

    딥다이브
    Data Structure
    mobile app
    structure of os
    자바스크립트
    How memory manage data
    js pattern
    Binary Tree BFS
    database
    testing
    Shared resources
    Network
    Time complexity and Space complexity
    Operating System
    프론트엔드 성능 최적화 가이드
    자바스크립트 딥다이브
    Threads and Multithreading
    DOM
    커리어
    Javascript Essentials
    모던 자바스크립트 Deep Dive
    VoiceJournal
    이벤트
    polylingo
    스코프
    need a database
    CPU scheduling algorithm
    indie hacker
    leetcode
    TCP/IP
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
JTB
102. Binary Tree Level Order Traversal
상단으로

티스토리툴바