백준) 5639 이진검색트리

박복만·2021년 7월 13일
0

알고리즘_백준

목록 보기
3/7
post-thumbnail

접근방법

  • 이진트리라는 것을 확인
  • 전위순회의 첫번째는 무조건 루트라는것
  • 루트보다 큰원소가 나오면 오른쪽 서브트리의 시작 !, 왼쪽 서브트리와 오른쪽 서브트리를 찾아내

코드

import sys
sys.setrecursionlimit(10 ** 9)
input = sys.stdin.readline
inp = []

while True:
    try:
        inp.append(int(input()))
    except:
        break

def sol(s,e):
    if s>e:
        return
    parent = inp[s]
    idx = e+1
    for i in range(s+1, e+1):
        if parent < inp[i]:
            idx = i
            break

    sol(s+1,idx-1)
    sol(idx,e)
    print(parent)


sol(0,len(inp)-1)

챙겨갈점

  • 순회 개념
  • 순회 문제에서는 각 서브트리의 인덱스 시작점을 잘계산하는게 중요하다.
profile
병신

0개의 댓글