문제 링크
https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
풀이
- 처음엔 bfs로 접근했는데 그래프 문제가 아닌 재귀로 풀면 되는 문제
- 전위 순회는 root -> left -> right
중위 순회는 left -> root -> right
후위 순회는 left -> right -> root
left, right의 subtree에 대하여 재귀로 함수 실행
def preorder(node):
if node == '.':
return
print(node,end="")
preorder(tree[node][0])
preorder(tree[node][1])
def inorder(node):
if node == '.':
return
inorder(tree[node][0])
print(node, end="")
inorder(tree[node][1])
def postorder(node):
if node == '.':
return
postorder(tree[node][0])
postorder(tree[node][1])
print(node, end="")
n = int(input())
tree = {}
for _ in range(n):
a, b, c = input().split()
tree[a] = (b,c)
preorder('A')
print()
inorder('A')
print()
postorder('A')
'개발 > algorithm' 카테고리의 다른 글
[백준 16953번] A -> B - python (0) | 2022.02.24 |
---|---|
[백준 11660번] 구간 합 구하기 5 - python (0) | 2022.02.24 |
[백준 1629번] 곱셈 - python (0) | 2022.02.23 |
[백준 11725번] 트리의 부모 찾기 - python (0) | 2022.02.23 |
[백준 14500번] 테트로미노 - python (0) | 2022.02.19 |