私と私の友人は、単純な Python プロジェクトに取り組んでいます。実際には、独自の方法で前置並列合計アルゴリズムを実装しています。
非常に奇妙な形式のバイナリ ツリーを作成して処理しています。この形式を、ete2 などの Tree 印刷ライブラリ/ソフトウェアで受け入れられる形式に変換したいと考えています。
したがって、ツリーのすべてのレベルがそのようにリストにプッシュされます
[ [level0], [level1], ... [level i-1], [root] ]
私たちの形式では、すべての内部リスト (ツリーのレベル) に偶数のノードまたはリーフがあります。
たとえば、次の入力があるとします[1, 2, 3, 4, 5]
。これにより、次の出力リストが生成されます。[[1, 2, 3, 4], [3, 7], [10, 5], [15]]
上記の出力例の問題は、葉が最終レベルにない場合があることですが、それらは上位レベルのリストに含まれています。これにより、リストのリストを処理し、ノードとリーフを区別し、それらを正しい位置に配置することが難しくなります。
これを次のように視覚化したいと思います。
http://i.imgur.com/BKrqNZi.png
ここで、括弧内の数字はノードで、それ以外は葉です。
この出力ツリーを生成するために、1 つの Tree 描画ライブラリを使用したいと考えています。それらのほとんどは、このタイプのフォーマットを期待しています:[root, [left], [right]]
したがって、この例では、フォーマットは次のようになります。
[15, [10, [3, [1], [2]], [7, [3], [4]] ], [5] ]
現時点では、コードのロジック全体を書き直す立場にないため、奇妙な形式をその形式に変換するスマートな方法を探しています。
どんなアイデアでも大歓迎です。事前にどうもありがとうございました。