코드
# 트리 순회
# 루트 노드가 어디에 있는지에 따라 전위, 중위, 후위가 정해진다
# 전위 순회(preorder): 루트 -> 왼쪽 -> 오른쪽 순으로 순회
# 중위 순회(inorder): 왼쪽 탐색 -> 루트 -> 오른쪽 순회
# 후위 순회(postorder): 왼쪽 -> 오른쪽 -> 루트 순회
n = int(input())
tree = {}
for _ in range(n):
parent,left,right = input().split()
tree[parent] = [left, right] # 이진 트리 입력
# 전위 순회
def preorder(node):
if node != ".":
print(node, end='')
preorder(tree[node][0])
preorder(tree[node][1])
# 중위 순회
def inorder(node):
if node != ".":
inorder(tree[node][0])
print(node, end='')
inorder(tree[node][1])
# 후위 순회
def postorder(node):
if node != ".":
postorder(tree[node][0])
postorder(tree[node][1])
print(node, end='')
# A가 루트 노드가 된다고 했으므로 A를 입력해준다.
preorder("A")
print()
inorder("A")
print()
postorder("A")
트리 자료구조에 대해서 공부할 시간이 되었다고 생각이 든 문제!
'백준' 카테고리의 다른 글
[백준] 15900번 나무 탈출 파이썬 코드 (0) | 2024.03.03 |
---|---|
[백준] 9934번 완전 이진 트리 파이썬 코드 (0) | 2024.03.02 |
[백준] 25379번 피하자 파이썬 코드 (0) | 2024.02.27 |
[백준] 19941번 햄버거 분배 파이썬 코드 (0) | 2024.02.27 |
[백준] 21756번 지우개 파이썬 코드 (0) | 2024.02.23 |