[Silver I] Title: 트리 순회, Time: 64 ms, Memory: 37112 KB -BaekjoonHub
This commit is contained in:
40
백준/Silver/1991. 트리 순회/README.md
Normal file
40
백준/Silver/1991. 트리 순회/README.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# [Silver I] 트리 순회 - 1991
|
||||
|
||||
[문제 링크](https://www.acmicpc.net/problem/1991)
|
||||
|
||||
### 성능 요약
|
||||
|
||||
메모리: 37112 KB, 시간: 64 ms
|
||||
|
||||
### 분류
|
||||
|
||||
재귀, 트리
|
||||
|
||||
### 제출 일자
|
||||
|
||||
2025년 3월 2일 14:59:18
|
||||
|
||||
### 문제 설명
|
||||
|
||||
<p>이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오.</p>
|
||||
|
||||
<p style="text-align: center;"><img alt="" src="https://www.acmicpc.net/JudgeOnline/upload/201007/trtr.png" style="height:220px; width:265px"></p>
|
||||
|
||||
<p>예를 들어 위와 같은 이진 트리가 입력되면,</p>
|
||||
|
||||
<ul>
|
||||
<li>전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식)</li>
|
||||
<li>중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식)</li>
|
||||
<li>후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트)</li>
|
||||
</ul>
|
||||
|
||||
<p>가 된다.</p>
|
||||
|
||||
### 입력
|
||||
|
||||
<p>첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파벳 대문자로 매겨지며, 항상 A가 루트 노드가 된다. 자식 노드가 없는 경우에는 .으로 표현한다.</p>
|
||||
|
||||
### 출력
|
||||
|
||||
<p>첫째 줄에 전위 순회, 둘째 줄에 중위 순회, 셋째 줄에 후위 순회한 결과를 출력한다. 각 줄에 N개의 알파벳을 공백 없이 출력하면 된다.</p>
|
||||
|
||||
52
백준/Silver/1991. 트리 순회/트리 순회.py
Normal file
52
백준/Silver/1991. 트리 순회/트리 순회.py
Normal file
@@ -0,0 +1,52 @@
|
||||
import sys
|
||||
import math
|
||||
from collections import deque
|
||||
from collections import defaultdict
|
||||
|
||||
input=sys.stdin.readline
|
||||
|
||||
n = int(input())
|
||||
tree = defaultdict(list)
|
||||
|
||||
for i in range(n):
|
||||
node, left, right = map(str, input().split())
|
||||
tree[node].append(left)
|
||||
tree[node].append(right)
|
||||
|
||||
def preorder(i):
|
||||
if(tree[i] == '.'):
|
||||
return
|
||||
elif(tree[i]):
|
||||
print(i, end='')
|
||||
preorder(tree[i][0])
|
||||
preorder(tree[i][1])
|
||||
else:
|
||||
return
|
||||
|
||||
def midorder(i):
|
||||
if(tree[i] == '.'):
|
||||
return
|
||||
elif(tree[i]):
|
||||
midorder(tree[i][0])
|
||||
print(i, end='')
|
||||
midorder(tree[i][1])
|
||||
else:
|
||||
return
|
||||
|
||||
|
||||
|
||||
def lastorder(i):
|
||||
if(tree[i] == '.'):
|
||||
return
|
||||
elif(tree[i]):
|
||||
lastorder(tree[i][0])
|
||||
lastorder(tree[i][1])
|
||||
print(i, end='')
|
||||
else:
|
||||
return
|
||||
|
||||
preorder('A')
|
||||
print()
|
||||
midorder('A')
|
||||
print()
|
||||
lastorder('A')
|
||||
Reference in New Issue
Block a user