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

[알고리즘][Python] 백준 5639 이진 검색 트리 문제 풀이

Written by Donghak Park

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


문제 해석 : 이진 트리의 트리를 순회하여 출력하는 문제이다.

 

문제 풀이 : 주어진 순회를 입력 받아 이를 이진 트리임에 유의하여 더 커지는 순간이 자신의 루트라는 것을 생각하여 재 구성하여 출력하면 된다.


풀이 코드

def solution(start, end):
    if start > end:
        return

    div = end + 1

    for i in range(start + 1, end + 1):
        # 루트 보다 큰 지점 --> 오른쪽 서브 트리
        if tree[start] < tree[i]:
            div = i
            break

    solution(start + 1, div - 1)
    solution(div, end)
    print(tree[start])


import sys
sys.setrecursionlimit(10 ** 9)

tree = []
count = 0
while count <= 10000:

    try:
        temp = int(input())
    except:
        break
    tree.append(temp)
    count += 1

solution(0, len(tree) - 1)

author : donghak park
contact : donghark03@naver.com

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