[JAVA] 백준 q1991 - 트리 순회

2023. 9. 21. 21:58· 알고리즘/백준
 

1991번: 트리 순회

첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파

www.acmicpc.net


> 의식의 흐름

 

> 풀이 과정

 

> 코드

import java.io.*;
import java.util.StringTokenizer;

public class Main {
    public static int N; // 노드의 개수
    public static Node[] nodes;
    public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    public static class Node{
        char left;
        char right;

        public Node(char left, char right){
            this.left = left;
            this.right = right;
        }
    }

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        N = Integer.parseInt(br.readLine());
        nodes = new Node[N];

        for(int i=0;i<N;i++){
            StringTokenizer st = new StringTokenizer(br.readLine());

            nodes[st.nextToken().charAt(0)-'A'] = new Node(st.nextToken().charAt(0), st.nextToken().charAt(0));
        }

        preorder('A'); // 전위 순회
        bw.write("\n");
        inorder('A'); // 중위 순회
        bw.write("\n");
        postOrder('A'); // 후위 순회
        bw.flush();

        br.close();
        bw.close();
    }

    public static void preorder(char alphabet) throws Exception {
        Node now = nodes[alphabet-'A'];

        bw.write(Character.toString(alphabet));

        if(now.left != '.')
            preorder(now.left);

        if(now.right != '.')
            preorder(now.right);
    }

    public static void inorder(char alphabet) throws Exception {
        Node now = nodes[alphabet-'A'];

        if(now.left != '.')
            inorder(now.left);

        bw.write(Character.toString(alphabet));

        if(now.right != '.')
            inorder(now.right);
    }

    public static void postOrder(char alphabet) throws Exception {
        Node now = nodes[alphabet-'A'];

        if(now.left != '.')
            postOrder(now.left);

        if(now.right != '.')
            postOrder(now.right);

        bw.write(Character.toString(alphabet));
    }
}
저작자표시 (새창열림)

'알고리즘 > 백준' 카테고리의 다른 글

[JAVA] 백준 q1541 - 잃어버린 괄호  (2) 2023.10.10
[JAVA] 백준 q5639 - 이진 검색 트리  (0) 2023.10.04
[JAVA] 백준 q11725 - 트리의 부모 찾기  (0) 2023.09.21
[JAVA] 백준 q14675 - 단절점과 단절선  (0) 2023.09.19
[JAVA] 백준 q7662 - 이중 우선순위 큐  (0) 2023.09.15
'알고리즘/백준' 카테고리의 다른 글
  • [JAVA] 백준 q1541 - 잃어버린 괄호
  • [JAVA] 백준 q5639 - 이진 검색 트리
  • [JAVA] 백준 q11725 - 트리의 부모 찾기
  • [JAVA] 백준 q14675 - 단절점과 단절선
하얀 돌덩이
하얀 돌덩이
하얀 돌덩이
돌덩이
하얀 돌덩이
전체
오늘
어제
  • 분류 전체보기 (59)
    • 개발 일지 (2)
    • 스프링 (1)
    • JAVA (2)
    • 딥러닝 (10)
    • 알고리즘 (43)
      • 개념 (4)
      • 프로그래머스 (5)
      • 백준 (34)
    • 후기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
하얀 돌덩이
[JAVA] 백준 q1991 - 트리 순회
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.