2016-10-17 7 views
-1

初心者の質問かもしれませんが、私はこの質問に答えるのに苦労しています。私は「child2の」の左の子に「child5」を追加する必要が特定の位置にあるバイナリツリーに要素を挿入してください

   root 
     child1  child2 

    child3 child4 

:このようなバイナリツリー(バイナリではない探索木を)考えてみましょう。私はそれをどのようにしていますか?バイナリ検索ツリーのノードを追加する方法を知っています。ツリーがBSTではないので

if (newNode->val < root->data) { 
    -> pick left node 
} else { 
    -> pick right node 
} 

は、このソリューションは正しいことではないでしょう。同じのスナップショットは、このようなものです。

私が言うことをしようとしています何の絵表示:「3」の左として上記ツリーで

   1 
     2    3 

    4  5 

は、「6」を追加する必要があります。

+0

しかし、ツリー*はバイナリツリーですか?ノードと葉には何らかの順序がありますか?それはBSTと同じです。 –

+1

*なぜノードがそこに追加されるべきですか?これは特殊なケースですか、それともそれはどのルールからも続きますか?バランスのとれたツリーの次の「フリー」位置にノードを追加したいと思っていますか? – molbdnilo

+0

@molbdnilo、いいえ、それはどんなルールからでもありません。他のいくつかの問題を解決しながら、これの考え。そして、そうです、それは、バランスのとれたツリーの次の「フリー」ポジションにノードを追加したいのですか? –

答えて

0

大丈夫です。私はこれに対する答えが次のようなものだと考えています:

BFSのリトル調整が必要です。キューからアイテムをポップアップするときに、いずれかの子が空であるかどうかを確認します。最初の空の子スロットは、追加したい場所です。

関連する問題