私は、このような質問が受け入れている場合はわからないと、彼らはありませんが、私はこれがその答え意見と事実ソリューションの背後にあるによって異なりますちょうど議論の問題ではないと思われる場合、私は喜んで/編集、それを削除します。キューがバイナリツリーのレベルオーバトラバーサルで動作するのはなぜですか?
私は、バイナリツリーのレベルオーバトラバーサルについて読んでいました。キューデータ構造を使用すると、O(n)
ソリューションが存在します。
アルゴリズムはtemp_nodeがNULLでない間、空のキューQに
2)temp_node =ルート
3)ループを作成)この
1と同様である
a) print temp_node->data. b) Enqueue temp_node’s children (first left then right children) to q c) Dequeue a node from q and assign it’s value to temp_node
私はアルゴリズムを理解しますが、私は理解できないことはWOUかということですもし彼が手前でそれを知らなかったら、この解決策を考えてください。つまり、キューのどのプロパティ(およびバイナリツリーでもよい)によって、この場合に使用される正しいDSになります。バイナリツリーのレベルオーバトラバーサルのためにここでキューを使うことの背後にある考え方は何ですか?ありがとう!!
上記ツリーのレベル順トラバーサルは、ツリーの幅優先を横断するとき、幅が広いと広い取得1 2 3 4 5
。 Qのツリーの順序は4-2-5-1-3です。それはw DFS/stack(LIFO)で行われます。しかしFIFOプロパティが幅優先になるのはあなたのことです。 –