アプリをダウンロード
フォルダーを選び、編集前に関連ファイルを読むようアシスタントに依頼します。作業の目的と変更範囲を明確にしてください。
最大100個の異なる整数ラベルの先行順と中間順から二分木を復元します。空の木と片側の木を試し、入力を変更せずに矛盾した走査や重複ラベルを拒否します。
フォルダーを選び、編集前に関連ファイルを読むようアシスタントに依頼します。作業の目的と変更範囲を明確にしてください。
対応するエンドポイントを選択します。利用できるツールや回答品質は、設定したモデルとサーバーに依存します。
変更内容とコマンド出力を確認します。結果を採用する前にプロジェクトの検証を実行してください。生成コードが自動的にテスト済みになるわけではありません。
実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
def rebuild_tree(preorder, inorder):
for row in (preorder,inorder):
if type(row) not in (list,tuple) or len(row) > 100 or any(type(v) is not int for v in row):
raise ValueError("at most 100 integer nodes")
if len(set(preorder)) != len(preorder) or len(set(inorder)) != len(inorder) or set(preorder) != set(inorder):
raise ValueError("same distinct node labels")
positions, cursor = {v:i for i,v in enumerate(inorder)}, 0
def visit(lo,hi):
nonlocal cursor
if lo == hi: return None
value = preorder[cursor]; cursor += 1
at = positions[value]
if not lo <= at < hi: raise ValueError("inconsistent traversals")
left = visit(lo,at)
right = visit(at+1,hi)
return value,left,right
return visit(0,len(inorder))適用前に確認. 変更内容とコマンド出力を確認します。結果を採用する前にプロジェクトの検証を実行してください。生成コードが自動的にテスト済みになるわけではありません。