try~except를 이용해서 입력이 있을 때까지 받는다. except가 터지는 시점에 break를 걸어주면 입력받기를 중단할 수 있다.
가장 작은 트리부터 확인한다. 루트보다 커지면 오른쪽 노드이고, 루트보다 작으면 왼쪽 노드이다. 루트보다 큰 값부터 끝까지 반복문을 돌면서 루트보다 큰 노드를 찾았다.
왼쪽, 오른쪽 나뉘는 부분을 mid로 설정한다.
[start+1, mid-1]
왼쪽 노드, [mid, end]
오른쪽 노드로 구분한다.
왼쪽 노드와 오른쪽 노드를 가장 작은 단위까지 확인한다.
from sys import stdin as s
import sys
sys.setrecursionlimit(10**9)
s = open("input.txt", "rt")
num_list = []
while True:
try:
num = int(s.readline())
num_list.append(num)
except:
break
def postorder(first, end):
if first > end:
return
mid = end + 1 # 오른쪽 노드가 없을 경우
for i in range(first + 1, end + 1):
if num_list[first] < num_list[i]:
mid = i
break
postorder(first + 1, mid - 1)
postorder(mid, end)
print(num_list[first])
postorder(0, len(num_list) - 1)