트리를 순회하는 방법들

2024. 9. 26. 13:44·Algorithm/내용 정리

 

❒ Description


트리 순회란 그래프 순회의 한 형태로 트리 자료구조에서 각 노드를 정확히 한 번 방문하는 과정을 말한다.

그래프 순회와 마찬가지로 트리 순회 또한 DFS 또는 BFS로 탐색하는데, 특히 Binary Tree에서 DFS는

노드의 방문 순서에 따라 크게 3가지 방식으로 구분된다. 

 

오늘은 이 3가지 방식에 대해서 학습해볼 것이다.

 

 

 

 

 

❒ 전위 순회 (Pre-Order) : Root > Left  > Right


전위 순회는 Root > Left > Right 순으로 노드를 방문하는 방법이다.

전위 순회

더보기
preorder(node)
    if (node == null) return
    visit(node)
    preorder(node.left)
    preorder(node.right)
더보기
public void preOrder(TreeNode root) {
    if (root != null) {
        visit(root);
        preOrder(root.left);
        preOrder(root.right);
    }
}

 

※ 연관 문제
[LeetCode#783] Minimum Distance Between BST Nodes
[LeetCode#1038] Binary Search Tree to Greater Sum Tree

 

 

 

 

 

❒ 중위 순회 (In-Order) : Left  > Root > Right


중위 순회는 Left > Root > Right 순으로 노드를 방문하는 방법이다.

중위 순회

더보기
public void inOrder(TreeNode root) {
    if (root != null) {
        inOrder(root.left);
        // root 처리 관련 로직 
        inOrder(root.right);
    }
}

 

 

 

 

 

❒ 후위 순회 (Post-Order) :  Left > Right > Root 


후위 순회는 Left > Right > Root 순으로 노드를 방문하는 방법이다.

후위 순위

더보기
public void postOrder(TreeNode root) {
    if (root != null) {
        postOrder(root.left);
        postOrder(root.right);
        // root 처리 관련 로직 
    }
}

 

 

 

 

 


 

'Algorithm > 내용 정리' 카테고리의 다른 글

Dutch National Flag  (0) 2024.10.01
Insertion sort (삽입 정렬)  (0) 2024.09.29
Height-Balanced(높이 균형) Binary Tree  (0) 2024.09.22
Dijkstra & Floyd-Warshall  (0) 2024.09.17
Floyd Warshall 알고리즘  (0) 2024.09.14
'Algorithm/내용 정리' 카테고리의 다른 글
  • Dutch National Flag
  • Insertion sort (삽입 정렬)
  • Height-Balanced(높이 균형) Binary Tree
  • Dijkstra & Floyd-Warshall
gilbert9172
gilbert9172
gilbert9172 님의 블로그 입니다.
  • gilbert9172
    バックエンド
    gilbert9172
  • 전체
    오늘
    어제
    • All Categories (207)
      • 우테코 7기 (21)
        • 1주차 (8)
        • 2주차 (5)
        • 3주차 (6)
      • Langauge (6)
        • Java (3)
        • Kotlin (3)
      • Back-End (13)
        • SpringBoot (1)
        • Trouble Shooting (0)
        • Setup & Configuration (1)
        • SQL (3)
        • Redis (8)
      • Architecture (6)
        • Multi Module (1)
        • DDD (5)
      • CS (30)
        • Data Structure (6)
        • Operating System (0)
        • Network (12)
        • Database (10)
        • Design Pattern (2)
      • Algorithm (78)
        • 내용 정리 (18)
        • 문제풀이 (60)
      • DevOps (6)
        • AWS (5)
        • Git (1)
      • Front-End (1)
        • Trouble Shooting (1)
      • Project (6)
        • 페이스콕 (6)
      • Book (39)
        • 친절한 SQL 튜닝 (9)
        • 데이터 중심 애플리케이션 설계 (14)
        • 이벤트 기반 마이크로서비스 구축 (6)
        • Spring Batch docs (10)
        • Quartz docs (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    binarysearch
    greedy
    Two-Pointer
    sliding-window
    부분단조성
    오블완
    Back-Tracking
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
gilbert9172
트리를 순회하는 방법들
상단으로

티스토리툴바