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
        • Javascript Essentials
        • 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
  • 블로그 메뉴

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

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

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바