[백준] 1991 - 트리 순회

2023. 4. 21. 11:23· 알고리즘/문제
목차
  1. 처음 인접리스트를 배열로 구현한 코드
  2.  
  3. 인접리스트 재 구현

이 문제는 어려워서 정리 한다기 보다 인접리스트로 그래프를 만드는 것을 처음 접해서 기록 및 정리를 위해 작성한다.

 

 

https://www.acmicpc.net/problem/1991

 

1991번: 트리 순회

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

www.acmicpc.net

 


처음 인접리스트를 배열로 구현한 코드


  
from sys import stdin as s
s = open('input.txt','rt')
n = int(s.readline())
graph = [[] for _ in range(n+1)]
def preorder(num):
if num >=0:
print(chr(num+65),end='')
preorder(graph[num][0])
preorder(graph[num][1])
def inorder(num):
if num >=0:
inorder(graph[num][0])
print(chr(num+65),end='')
inorder(graph[num][1])
def postorder(num):
if num >=0:
postorder(graph[num][0])
postorder(graph[num][1])
print(chr(num+65),end='')
for i in range(n):
x , lo1,lo2 = list(map(str,s.readline().rstrip().split()))
graph[ord(x) - 65].append(ord(lo1) - 65)
graph[ord(x) - 65].append(ord(lo2) - 65)
preorder(0)
print()
inorder(0)
print()
postorder(0)

 

인접리스트 재 구현

 


  
from sys import stdin as s
s = open('input.txt','rt')
n = int(s.readline())
graph = {}
for i in range(n):
x , lo1,lo2 = list(map(str,s.readline().rstrip().split()))
graph[x] = [lo1,lo2]
def preorder(num):
if num != ".":
print(num, end='')
preorder(graph[num][0])
preorder(graph[num][1])
def inorder(num):
if num != ".":
inorder(graph[num][0])
print(num, end='')
inorder(graph[num][1])
def postorder(num):
if num != ".":
postorder(graph[num][0])
postorder(graph[num][1])
print(num, end='')
preorder('A')
print()
inorder('A')
print()
postorder('A')

 

아래의 방법으로 구하는 것이 아스키코드를 이용안하고 바로 인덱스 값으로 찾을 수 있어서 코딩 문제를 풀 때 훨씬 효율적일 것 같다.

 

 

  1. 처음 인접리스트를 배열로 구현한 코드
  2.  
  3. 인접리스트 재 구현
'알고리즘/문제' 카테고리의 다른 글
  • [BFS] - G5_7569 토마토
  • [백준] 1916 - 최소 비용 구하기 (다익스트라)
  • [스택] PPAP
  • [분할정복] MOO게임
Casteira
Casteira
할 뿐
Casteira
SpongeCake
Casteira
전체
오늘
어제
  • __Main__ (104)
    • 알고리즘 (65)
      • 개념 (6)
      • 문제 (58)
    • 컴퓨터 구조 (9)
      • 자료 구조 (2)
      • OS (7)
    • 웹 (1)
      • 자바 (1)
      • 스프링 (5)
      • SQL (0)
    • 기록 (4)
      • 포트폴리오 (2)
    • 정글 (18)
      • TIL (17)

블로그 메뉴

  • 🗒️ 깃허브
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • 크래프톤 정글
  • dp
  • annotation
  • 백준 골드
  • spring
  • 백준
  • 크래프톤
  • 정글
  • framework
  • 코딩테스트
  • java
  • springboot

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
Casteira
[백준] 1991 - 트리 순회
테마상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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