코딩/백준

[python] 백준 5639 이진 검색 트리

마은마음 2023. 4. 7. 02:29

5639번: 이진 검색 트리 (acmicpc.net)

 

5639번: 이진 검색 트리

트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다

www.acmicpc.net

 

import sys
sys.setrecursionlimit(10 ** 9) #재귀 많이 할 수 있게

def post_order(start,end):
    if start>end: #기저조건
        return
   
    mid = end+1 #오른쪽 트리의 루트노드 초기화
    for i in range(start+1,end+1):
        if arr[start]<arr[i]:
            mid = i #루트보다 커지는 지점이 오른쪽 트리의 루트노드
            break
    post_order(start+1, mid-1) #왼쪽 트리 방문
    post_order(mid, end) #오른쪽 트리 방문
    print(arr[start]) #끝까지 오면 노드 출력 시작


arr=[]
while True: #몇개를 입력받을지 모르기때문에 try except
    try:
        arr.append(int(input()))
    except: #더이상 입력받지 않으면
        break

post_order(0,len(arr)-1)

'코딩 > 백준' 카테고리의 다른 글

[python] 백준 4811 알약  (1) 2023.04.14
[python] 백준 2533 사회망서비스  (0) 2023.04.07
[python] 백준 15900 나무 탈출  (0) 2023.04.07
[python] 백준 18126 너구리 구구  (0) 2023.04.07
[python] 백준 1967 트리의 지름  (1) 2023.04.07