트리 순회(전위, 중위, 후위) - JAVA

2024. 8. 8. 22:46·알고리즘/개념

트리의 순회 방법에 대해 알아보자!

트리의 순회란 트리 구조의 자료형에서 모든 노드를 한번씩 방문하는 체계적인 방법을 말한다. 대표적으로 본 포스팅에서 다룰 전위순회(preorder[프리오더]), 중위순회(inorder[인오더]), 후위순회(postorder[포스트오더])가 있다. 알고리즘 문제에서 다룰 때 한국어로 다룰때도 있지만 영어 명칭으로 다룰때도 있고 많이 혼용되므로 정확한 명칭을 전무 알아두는 것이 좋다. 이진트리를 기준으로 각 순회방법에 대해 알아보자!

개요

결론부터 말하자면 위의 이미지를 이해하면 된다.

전위순회(preorder)

모든 순회의 시작은 루트노드부터 시작한다. A를 기준으로 B와 그 아래 트리를 왼쪽 서브트리, C 아래를 오른쪽 서브트리라 한다.

전위순회는 현재 노드를 방문하고 왼쪽 서브트리, 오른쪽 서브트리를 차례로 방문하며 각 노드에서 전위 순회를 반복하는 과정이다. 그림에서는 A노트를 방문하고 왼쪽의 B노드에서 전위순회를 하고, C 노드를 전위 순회하는 것이다.

코드로 과정을 살펴보는것이 이해가 빠르다.

class Node{
    int value;
    Node left;
    Node right;
}
void preorder(Node node) {
    // 노드 방문
    System.out.println(node.value);

    // 왼쪽 노드 전위 순회
    if(node.left != null){
        preorder(node.left);
    }

    // 오른쪽 노드 전위 순회
    if(node.right != null){
        preorder(node.right);
    }
}

중위순회(inorder)

중위 순회는 현재 노드를 살펴보기 전에 왼쪽 서브 트리를 먼저 방문하여 중위 순회를 하고, 현재 노드를 방문한 뒤 오른쪽 서브 트리를 중위 순회하는 과정이다.

void inorder(Node node) {
    // 왼쪽 서브 트리 순회
    if(node.left != null){
        inorder(node.left);
    }

    // 노드 방문
    System.out.println(node.value);

    // 오른쪽 서브 트리 순회
    if(node.right != null){
        inorder(node.right);
    }
}

후위순회(postorder)

후위 순회는 왼쪽, 오른쪽 서브트리를 먼저 순회하고 난 뒤 현재 노드를 방문하는 것이다.

void postorder(Node node) {
    // 왼쪽 서브 트리 순회
    if(node.left != null){
        postorder(node.left);
    }

    // 오른쪽 서브 트리 순회
    if(node.right != null){
        postorder(node.right);
    }

    // 노드 방문
    System.out.println(node.value);
}

 

728x90
저작자표시 비영리 변경금지 (새창열림)
'알고리즘/개념' 카테고리의 다른 글
  • 최장 증가 부분 수열(LIS) 알고리즘 - JAVA
LIRI
LIRI
  • LIRI
    기록
    LIRI
  • 전체
    오늘
    어제
    • 분류 전체보기 (73)
      • 블로그 꾸미기 (0)
      • Spring (6)
      • React (3)
      • CS (0)
      • 알고리즘 (57)
        • 개념 (2)
        • 문제풀이 (54)
      • Java (1)
      • DB (1)
      • log (4)
        • SSAFY (3)
        • 궁금 (1)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 공지사항

  • 인기 글

  • 태그

    springboot
    JWT
    그리디
    도대체왜
    dp
    알고리즘 문제풀이
    싸피
    너비우선탐색
    ssafy 합격 후기
    백준
    최장증가부분수열
    불 끄기
    SSAFY 9기
    프로그래머스
    Springsecurity
    LIS
    골드1
    Java
    Security
    pccp모의고사
    BOJ
    dfs
    알고리즘
    BFS
    비트마스킹
    LV2
    Spring
    lv3
    SSAFY
    리액트
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
LIRI
트리 순회(전위, 중위, 후위) - JAVA
상단으로

티스토리툴바