2017-06-16 4 views
0

私は、動物を葉と中間ノードとして区別するバイナリツリーとして、animal guessing gameをPythonでプログラミングしています。葉と質問はオブジェクトです。今では動物や中間の質問をピクルスファイルとして保存したいと思っています。
しかし、私は酸洗いのための様々なオブジェクトをどのように識別できるかわかりません。通常、オブジェクトはmonkey = Animal('Is it a monkey?')のように作成され、というサンドウィックという名前でオブジェクトを参照できるようになります。 しかし、木が成長するにつれて、リーフオブジェクトのサルは中間ノードに変更され、新しいサルノードへのyes-exitと別の(新しい)動物へのno-exitを持つ質問 'ピーナッツが好きですか?では、これらのオブジェクトをどのようにピクルするのですか?オブジェクトをPythonで保存する

+0

'Animal'ノードに質問をshoehorningするのではなく、おそらく2つの異なる種類のノードが必要です。また、通常はオブジェクトの酸洗いの結果を変更することはありません。それは静的な表現です。ツリーを変更する場合は、pickledフォームを変更するのではなく、ツリー全体を再度pickleします。なぜあなたが酸洗しているかに応じて、ツリー全体を繰り返し塗り替えるのではなく、ツリーを再構築するためにアンピクル後に使用できるツリーに*変更*をピクルすることができます。 – chepner

答えて

0

私は、ルートノードで始まり、pre-order methodologyを使用してトラバースする先行トラバーサルを利用します。

次に、ファイルを読みたいときは、同じタイプのトラバーサルを使用してツリーをプログラムに読み戻すことができます。

すべてのノードにルートノードから到達できるため、これらのタイプのトラバーサルは、バイナリ検索ツリーの簡単な書き込みと読み取りに便利です。昨年私のデータ構造コースでは、このメソッドを使って非常に似た割り当てを完了しました。

関連する問題