ベクトルベースの反復プロセスだけでなく再帰も、両方ともDFSツリー(bツリー)の探索に使用できます。どちらの場合も、再帰呼び出し中またはベクトル内でスタックに余分なスペースが必要です。宇宙を必要とせず、最小限のスペースが必要な技術は存在しますか?DFSは再帰と余分なスペースなしで可能ですか?
答えて
バイナリツリーを検索している場合、各パスをビットのパターンとして表すことができます。したがって、ルートポイントから下向きに検索し、バイナリ語のビットをつぶやくことによって進行状況を把握することができます。各レベルに1ビット必要です。
A
/\
B C
/\ \
D E F
Aで検索を開始すると、ABDで指定された検索は00(左 - 左)です。次は01、左右に対応するABEです。 10はA-C-子供なし。 11はACFです。
最下位ビットは、トラバーサルの最後に向ける方向を示します(つまり、リーフを選択します)。ビットシーケンスが他の方法で読み取られる場合、このメソッドは幅優先トラバーサルを指定します。
情報を少なく保存した結果、同じノードに再度アクセスします。
これはデータのリニアスキャンに相当するため、ツリーを持つ利点が損なわれることに注意してください。スタック余裕ができないスペースがある場合は、あらかじめ割り当てられたベクトルを使用することをお勧めします。これをソートしておくと、バイナリ検索などの処理を行うことができます。バイナリ検索はこれよりも効率的です。
ツリーをトラバースするために必要なスペースは、ログ(N)スペースで最悪の場合でも実行できます。ノードが単一のブランチである場合は、O(1)スペース/メモリのパフォーマンスを使用して行うことができます。しかし、ログ(N)のパフォーマンスは実際には小さいです。 2^300ノード(この宇宙には収まらない)があると想像すれば、300のような検索に必要なスペースがあり、数KBのRAMに収まることができます。
+1のデータを含む明確なステートメント。 – Abhinav
これはMarcinの答えの論点すべてと矛盾していませんか?ルートに左と右の両方の子がある木を考えてみましょう。そして、それぞれの左の子は、子を残しました。「n回」、それぞれの右の子は、右の子しか持っていません。このツリーをトラバースすると(この構造を知らないと、 'max(n、m)'最悪の場合のスペースが必要になります。私は 'n'と' m'を2^299にすることができます。その場合、ツリーは2^300 + 1個のノードを持ちます。私はあなたの答えがバランスのとれた木だけに有効だと思います。 – TWiStErRob
@ TWiStErRobこのようなツリーは、再帰や他の手を探す必要がないため、O(1)空間でテール再帰呼び出しとして表現できるので、一定のスペースを使用して移動できます。そのような場合、素朴な再帰的なトラバースにはO(N)時間がかかることに同意しますが、実際の問題は、O(1)スペースを必要とする非再帰的ソリューションを作ることが可能であり、 –
- 1. 余分なスペースが可能なテンプレートに表示されます
- 2. 余分なスペース
- 3. グリッドレイアウト余分なスペース
- 4. 余分なスペースでページ分割
- 5. XSD可能な再帰が
- 6. イメージに余分なスペースがあるのはなぜですか?
- 7. DFS再帰問題
- 8. スクロール可能なタブレイアウトの余分なタブ
- 9. 不可能な再帰的な汎用クラス定義ですか?
- 10. Java:AbsoluteLayoutの余分なスペース
- 11. HAML余分なスペースがTextarea
- 12. ドロップダウンメニューCss余分なスペース
- 13. プレタグの余分なスペース
- 14. Androidウィジェットの余分なスペース
- 15. recyclerview内の余分なスペース
- 16. asp.net mvc razor余分なスペース
- 17. Chrome - CSS - 余分なスペース
- 18. C concate string余分なスペース
- 19. ミニコンで余分なスペースを印刷
- 20. SQL再帰的クエリから余分な列を追加する
- 21. 余分なスペースをリストボックスから外す
- 22. 相互に再帰的なクラスは可能ですか?
- 23. Excelグリッド線はセルの一部か余分なスペースですか?
- 24. 余分なスペースで余分な要素を選択するボックス(HTML/JS/CSS/Angular.js)
- 25. フォントを変更した余分なスペース
- 26. textconnectionは余分なスペースを生む[R]
- 27. 応答CSSの余分なスペースは、float:left;
- 28. Webkitブラウザの余分なスペースはありますか? (ChromeとSafari)
- 29. BeautifulSoupは予期しない余分なスペースを返します
- 30. 再帰DFS Rubyのメソッド
あなたの投稿は面白そうです。しかし、あなたが小さな例でいつかそれを広げてください、私はあなたの時間が多くの読者に価値があると思います。 – Abhinav
@abhinav:上記の私の編集をチェックしてください。ありがとうございます; – Marcin
;当然のことながら、私たちは00000から始まると言います...最も左にあることを示し、最終的に11111に終わります...右端を示します。 ありがとう – Abhinav