본문 바로가기
알고리즘

[백준] 1991번: 트리 순회 - python

by 육빔 2024. 4. 9.
728x90
반응형

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

 

1991번: 트리 순회

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

www.acmicpc.net

 

아이디어

 

인덱스 값이 문자열이기 때문에 dict 형태로 저장한다.

그 후 학교에서 배운 전위, 중위, 후위순회로 DFS로 탐색을 진행하면서 출력을 뽑아낸다.

 

n = int(input())
tree = {}
for i in range(n):
    root, left, right = input().split()   
    tree[root] = [left, right]


def preorder(v):
    if v !=".":
        print(v, end="")
        preorder(tree[v][0])
        preorder(tree[v][1])
def inorder(v):
    if v !=".":
        inorder(tree[v][0])
        print(v, end="")
        inorder(tree[v][1])
def postorder(v):
    if v !=".":   
        postorder(tree[v][0])
        postorder(tree[v][1])
        print(v, end="")

preorder("A")
print()
inorder("A")
print()
postorder("A")

 

완성

728x90
반응형