프로그래밍 공부/백준 문제풀기

5639번: 이진 검색 트리 파이썬 문제풀이

sh1256 2023. 2. 11. 23:12
728x90

50 30 24 5 28 45 98 52 60

입력은 root -> left -> right 순으로 들어온다.

root, left, right정하는 방법: 맨 처음 값을 root라고 정해놓고 그 다음값들은 left로 보다가 root보다 큰 값이 나오는 순간 right값들이다.

출력을 left -> right -> root 순으로 출력하면 정답.

 

postorder()를 재귀함수로 하여 만든다. 

 

#BJ 5639
import sys
sys.setrecursionlimit(10**6)

def postorder(start, end):
    if start>end: return
    root=preorder[start]
    next=start+1
    while next<=end:
        if preorder[next]>root:break
        next+=1
    postorder(start+1, next-1)
    postorder(next, end)
    print(root)

preorder=list(map(int,sys.stdin.readlines()))
postorder(0, len(preorder)-1)

https://ongveloper.tistory.com/295

 

백준 5639 이진 검색 트리 c++ (트리)

문제 출처 : https://www.acmicpc.net/problem/5639 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며

ongveloper.tistory.com