[白俊5639]バイナリ検索ツリー
12598 ワード
🥚質問する
https://www.acmicpc.net/problem/5639
🥚入力/出力
🍳コード#コード#
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
def pre_to_post(start, end):
if start > end:
return
root = preorder[start]
# root보다 커지는 인덱스 찾기
idx = start
while idx <= end:
if preorder[idx] > root:
break
idx += 1
# 왼쪽
pre_to_post(start+1, idx-1)
# 오른쪽
pre_to_post(idx, end)
# 루트
print(root)
# 입력
preorder = []
while True:
try:
preorder.append(int(input()))
except:
# EOF -> break
break
# pre_to_post
pre_to_post(0, len(preorder)-1)
🧂アイデア
グラフィック理論
入力の受信😮
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
def pre_to_post(start, end):
if start > end:
return
root = preorder[start]
# root보다 커지는 인덱스 찾기
idx = start
while idx <= end:
if preorder[idx] > root:
break
idx += 1
# 왼쪽
pre_to_post(start+1, idx-1)
# 오른쪽
pre_to_post(idx, end)
# 루트
print(root)
# 입력
preorder = []
while True:
try:
preorder.append(int(input()))
except:
# EOF -> break
break
# pre_to_post
pre_to_post(0, len(preorder)-1)
🧂アイデア
グラフィック理論
入力の受信😮
# 입력
preorder = []
while True:
try:
preorder.append(int(input()))
except:
# EOF -> break
break
ぜんれつ巡り
50 | 30 24 5 28 45 | 98 52 60
「左処理->右処理->ルート出力」動作を再帰的に繰り返すと、次のサイクルの結果が得られます.
def pre_to_post(start, end):
if start > end:
return
root = preorder[start]
# root보다 커지는 인덱스 찾기
idx = start
while idx <= end:
if preorder[idx] > root:
break
idx += 1
# 왼쪽
pre_to_post(start+1, idx-1)
# 오른쪽
pre_to_post(idx, end)
# 루트
print(root)
タイムアウトコード
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**9)
def pre_to_post(preorder):
global postorder
if len(preorder) == 0:
return
root = preorder[0]
left = []
right = []
for i in range(1, len(preorder)):
if preorder[i] < root:
left.append(preorder[i])
else:
right.append(preorder[i])
pre_to_post(left)
pre_to_post(right)
postorder.append(root)
postorder = []
preorder = []
while True:
try:
preorder.append(int(input()))
except:
break
pre_to_post(preorder)
for x in postorder:
print(x)
パスされていない上のコードではroot以外のすべての要素が巡回され、左、右というリストがそれぞれ作成され、要素が加わっているので時間がかかります.
Reference
この問題について([白俊5639]バイナリ検索ツリー), 我々は、より多くの情報をここで見つけました https://velog.io/@eastgloss0330/백준-5639-이진-검색-트리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol