📊알고리즘, 문제풀이/📈문제풀이 (PS)

[알고리즘][Python] 백준 1991 트리 순회 문제 풀이

Written by Donghak Park

문제 출처 : www.acmicpc.net/problem/1991

 

1991번: 트리 순회

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

www.acmicpc.net


문제 해석 : 트리를 전위, 중위, 후위 순회하는 코드를 작성하는 문제이다.

 

문제 풀이 : 딕셔너리 자료형을 통해서 트리를 구성하고 순회 알고리즘을 적용하면 풀 수 있다.


풀이 코드

def pre(current):
    if current == ".":
        return
    else:
        left,right = tree[current]
        print(current, end="")
        pre(left)
        pre(right)

def mid(current):
    if current == ".":
        return
    else:
        left, right = tree[current]
        mid(left)
        print(current, end="")
        mid(right)

def post(current):
    if current ==".":
        return
    else:
        left, right = tree[current]
        post(left)
        post(right)
        print(current, end = "")


N = int(input())

tree = {}

for _ in range(N):
    root, left, right = input().split()
    tree[root] = [left, right]

pre("A")
print()
mid("A")
print()
post("A")

author : donghak park
contact : donghark03@naver.com

## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.