반응형
5639번: 이진 검색 트리
트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다
www.acmicpc.net
알고리즘 분류
- 그래프 이론
- 그래프 탐색
- 트리
- 재귀
SOLUTION
import sys
sys.setrecursionlimit(10**6)
def postorder(start, end):
if start > end : # 더 이상 탐색할 노드 존재 X
return
root = preorder_list[start] # 시작 노드
idx = start + 1
for i in range(idx, end+1):
# 서브 노드가 뿌리 노드보다 크다면 인덱스 재설정
# 값이 역전되는 순간 root의 오른쪽 서브노드로 간 것이기 때문
if preorder_list[i] > root:
idx = i
break
postorder(start+1, idx-1) # 루트의 왼쪽 서브 트리
postorder(idx, end) # 루트의 오른쪽 서브 트리
print(root)
preorder_list = []
while True:
try:
preorder_list.append(int(sys.stdin.readline()))
except:
break
postorder(0, len(preorder_list)-1)
'코딩테스트 대비 > 단계별 코딩 테스트 준비(27일 과정)' 카테고리의 다른 글
[최소 신장 트리/Python] 17472번: 다리 만들기 2 - 효과는 굉장했다! (0) | 2022.02.19 |
---|---|
[최소 신장 트리/Python] 1197번: 최소 스패닝 트리 - 효과는 굉장했다! (0) | 2022.02.19 |
[트리/Python] 2263번: 트리의 순회- 효과는 굉장했다! (0) | 2022.02.19 |
[투 포인터/Python] 1806번: 부분합 - 효과는 굉장했다! (0) | 2022.02.19 |
[투 포인터/Python] 3273번: 두 수의 합 - 효과는 굉장했다! (0) | 2022.02.19 |