同じレベルにあるバイナリツリーのノードをどのように接続するかについての記事やページがありますが、これらの記事のどれもプロセス/アルゴリズムをはっきりと説明していません。誰かがこれを受け入れることができたら、私は感謝します。コードは必要ではありませんが、疑似コードで説明するといいでしょう。議論の便宜上バイナリツリーの同じレベルでノードを接続する
、私たちのようにツリーを考えてみましょう:上記の場合
0
1 2
3 4 5 6
7 9
:
0 should point to null.
1 should point to 2.
3 should point to 4.
....
7 should point to 9.
9 should point to NULL.
基本的なツリー構造は、次のとおりです。
class Tree {
public:
int data;
Tree* left;
Tree* right;
Tree* next;
}
の線に沿って手順をお勧めしたい(https://en.wikipedia.org/wiki/ Breadth-first_search)アルゴリズムを使用し、すべてのレベルで前のノードを一時的に保存することができます。次に、 '前のノード 'の'次の 'は'現在解析されている 'ノードになります。 – sameerkn
はい、レイヤー内を横断するbfsや幅優先検索を使用します。したがって、基本的にルートから同じ距離にある同じレベルのノードを持ちます。 –
@ sameerkn、私はそれを理解しています。疑似コードを書いてもよろしいですか? –