CS 공부/백준 - Python
[백준 1991번] 트리 순회 - 파이썬(Python)
nanocat
2022. 12. 9. 01:09
https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
def preorder(tree, node, visit_list):
visit_list.append(node)
if (tree[node][0] != '.'):
preorder(tree, tree[node][0], visit_list)
if (tree[node][1] != '.'):
preorder(tree, tree[node][1], visit_list)
def inorder(tree, node, visit_list):
if (tree[node][0] != '.'):
inorder(tree, tree[node][0], visit_list)
visit_list.append(node)
if (tree[node][1] != '.'):
inorder(tree, tree[node][1], visit_list)
def postorder(tree, node, visit_list):
if (tree[node][0] != '.'):
postorder(tree, tree[node][0], visit_list)
if (tree[node][1] != '.'):
postorder(tree, tree[node][1], visit_list)
visit_list.append(node)
def main():
n = int(input().strip())
tree = {}
visit_list = []
for _ in range(n):
node_list = input().strip().split(' ')
tree[node_list[0]] = [node_list[1], node_list[2]]
preorder(tree, 'A', visit_list)
for v in visit_list:
print(v, end='')
print()
visit_list = []
inorder(tree, 'A', visit_list)
for v in visit_list:
print(v, end='')
print()
visit_list = []
postorder(tree, 'A', visit_list)
for v in visit_list:
print(v, end='')
print()
visit_list = []
if __name__ == '__main__':
main()