5. 이진트리순회(DFS: Depth - First - Searching)

2023. 11. 15. 00:20·알고리즘/Recursive, Tree, Graph(DFS, BFS 기초)

1. 문제

이진트리

해당 이진트리의 전위, 중위, 후위 순회를 연습하자.

 

 

2. 나의 풀이

트리는 학교에서도 안배워서 강의 봄.

 

 

3 - 1. 강의 풀이

트리를 선언해서 값을 넣어주고 순회한다.

 

직접 써보면서 순회가 어떻게 이루어지는 지 느끼자.

 

부모, 왼쪽, 오른쪽 이게 전위 순회의 기본 순서인데

부모위치 전, 중, 후에 따라서 전위, 중위, 후위 순회가 결정된다.

 

전위: 1 2 4 5 3 6 7

중위: 4 2 5 1 6 3 7

후위: 4 5 2 6 7 3 1

 

System.out.print(root.data + "  "); //전위 순회
DFS(root.lt);
DFS(root.rt);
DFS(root.lt);
System.out.print(root.data + "  "); //중위 순회
DFS(root.rt);
DFS(root.lt);
DFS(root.rt);
System.out.print(root.data + "  "); //후위 순회

 

3 - 2. 강의 코드

package BFS_DFS;
import java.util.*;

class Node{
    int data;
    Node lt, rt;

    public Node(int value) {
            this.data = value;
        lt = rt = null;
    }

}


public class dfs05_root {
    public static Node root; //root 노드 생성

    public static void DFS(Node root) {
        if(root == null) return;
        else{
            System.out.print(root.data + "  "); //부모노드의 값 출력
            DFS(root.lt);
            DFS(root.rt);         
        }
    }

    //부모 왼쪽 오른쪽 중에서 부모 노드가 전 중 후로 출력됨에 따라서 전위 중위 후위로 결정된다.

    public static void main(String[] args) {
        dfs05_root tree = new dfs05_root();
        root = new Node(1); //root 노드에 data 1 저장
        root.lt = new Node(2);
        root.rt = new Node(3);
        root.lt.lt = new Node(4);
        root.lt.rt = new Node(5);
        root.rt.lt = new Node(6);
        root.rt.rt = new Node(7);

        DFS(root);
    }


}

 

 

4. 얻어갈 점

직접 순서를 써가면서 순회가 어떻게 이루어지는 지 느껴보는 것이 중요하다.

'알고리즘 > Recursive, Tree, Graph(DFS, BFS 기초)' 카테고리의 다른 글

7. 이진트리 레벨 탐색 (BFS: Breadth - First Search)  (0) 2023.11.20
6. 부분 집합 구하기(DFS)  (0) 2023.11.16
4. 피보나치 재귀(메모이제이션)  (0) 2023.11.14
3. 팩토리얼 (재귀)  (0) 2023.11.14
2. 이진수 출력 (재귀)  (1) 2023.11.13
'알고리즘/Recursive, Tree, Graph(DFS, BFS 기초)' 카테고리의 다른 글
  • 7. 이진트리 레벨 탐색 (BFS: Breadth - First Search)
  • 6. 부분 집합 구하기(DFS)
  • 4. 피보나치 재귀(메모이제이션)
  • 3. 팩토리얼 (재귀)
koreaioi
koreaioi
  • koreaioi
    koreaioi
    koreaioi
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (144) N
      • JAVA (1)
      • 알고리즘 (86) N
        • 백준 (10) N
        • String(문자열) (12)
        • Array(1, 2차원 배열) (13)
        • Two pointers, Sliding windo.. (6)
        • HashMap, TreeSet(해쉬, 정렬지원 S.. (5)
        • Stack, Queue(자료구조) (8)
        • Sorting and Searching(정렬, 이.. (10)
        • Recursive, Tree, Graph(DFS,.. (14)
        • DFS, BFS 활용 (6)
        • 다시 시작! (1)
        • 기초 수학 (1)
      • 일상 (19)
      • Github (1)
      • MSA 공부 (3)
      • 경제, 금융, 디지털, 시사 (3)
      • 라즈베리파이 (10)
      • 프로젝트에서 일어난 일 (13)
      • FrontEnd 공부 (8)
        • React (7)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
koreaioi
5. 이진트리순회(DFS: Depth - First - Searching)
상단으로

티스토리툴바