BBranchSpire
AIコーディングワークスペース

走査順序からの木の復元

最大100個の異なる整数ラベルの先行順と中間順から二分木を復元します。

● ● ●BranchSpire●
ワークフロー · 走査順序からの木の復元 ×
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))
✳最大100個の異なる整数ラベルの先行順と中間順から二分木を復元します。
✓ 変更内容適用前に確認 ↗
ワークスペースのイメージ
01

モデル

OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。

02

プロジェクト

空の木と片側の木を試し、入力を変更せずに矛盾した走査や重複ラベルを拒否します。

03

適用前に確認

実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。

ワークフロー

走査順序からの木の復元

ワークフロー ↗
ワークフロー
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))
AIコーディングワークスペース

復元コードを変えるときも構造を保つ

構造化データは基本的な要素の一致チェックを通過しても、有効な構造を表さない場合があります。BranchSpireはプロジェクトファイルを見ながらその隔たりを検討するWindows向けAIコーディング環境です。ソース変更を依頼する前に、入力仕様と呼び出し側が期待するオブジェクトについて話し合います。

具体的な作業は、先行順と中間順の走査列からの復元のレビューです。小さな有効な木と、矛盾する走査列の組を示し、実装がどこで両者を区別するか接続モデルに確認させてください。呼び出し側が確立していない一意性を提案コードが黙って仮定しないよう、ラベルが互いに異なるという要件を明示します。

再帰ロジックと周囲のインターフェースを確認します。無効データの報告方法と、呼び出し側が特定の戻り値表現に依存するかを決めてください。自分のプロジェクトで空入力、単一ノード、無効な組み合わせのテストデータを実行します。成功例は1つの経路を示し、明示的な拒否例は受け入れるデータの境界を明らかにします。

BranchSpireは対応するOpenAI互換またはAnthropicのエンドポイントに、必要な認証情報を使って接続します。利用可能なアブリテレーション済みAIモデルを選択でき、ツールとコンテキスト上限はそのサーバーが決めます。接続を使って提案を作り検討し、アプリケーションに必要な構造に照らして差分と実行結果を評価してください。

復元コードの構造を保つために、編集前に確認すること

要素の一致だけでは復元に不十分なのはなぜですか?

走査の順序も整合する構造を表す必要があるためです。作業の議論には同じラベルを持つ無効な順序も含めます。提案実装のどこでその不整合を検出するかをモデルに特定させてください。

重複ラベルを受け入れるべきですか?

復元仕様が明示的に対応する場合に限ります。この例は互いに異なるラベルを前提としています。検証処理と呼び出し側を一緒に確認し、未記載の前提で構造を生成するのではなく、曖昧な入力を意図的に拒否してください。

リファクタリングで保持すべき出力の詳細は?

利用側が期待するノード表現、空の木の値、子の順序を指定します。数学的に同じ木でも表現が変われば統合を壊す場合があります。より広いリファクタリングを採用する前に、利用側を確認してください。

再帰コードのレビューの焦点を保つには?

結果が分かっている短いテストデータを提示し、境界と失敗経路の説明を求めます。実際のソース差分をレビューしてからプロジェクトのツールで実行してください。対応する確認を伴わない長い説明に頼ることは避けます。

Windows版をダウンロード ↗

BranchSpire · 更新日 2026-10-25