ツリーに追加する2つのノードと、2つのニュースノードを追加するノードを提供するソースからツリーを作成しようとしています。このノードがツリー内のどこにあるかを知るために、私はO(n)を取るinorder traversalを使いました。したがって、ツリーにn個のノードを追加すると、ツリー全体の作成はO(n^2)になります。私の制約は、木を作るのにO(n)しかかからないということです。バイナリツリーを作成する時間の複雑さ
答えて
ツリーの典型的なO(log(n))
ではなく、各ノードへのアクセスがO(1)
になるように、HashMap [1]のツリーの各ノードへの参照を保持できます。 HashMapを使うと、ツリーのルートノードからそのノードを横断するのではなく、ノードに直接ジャンプすることができるので、O(n)
の時間にツリーを構築することが可能になります。
[1]鍵は、ノードを一意に識別するためにソースが使用するもので、私はそれを整数または文字列とみなしています。値は、ツリー内のノードへの参照になります。ツリーの実装では、すべてのノードをパブリックにする必要があるため、ツリーを自分で作成するか、適切なライブラリ(TreeMapなどのJDKのツリーは内部構造を非公開にして切断しない)を見つける必要があります。
これで問題は解決しますが、もう1つの質問があります。なぜなら、その時点でHashMapにデータを格納し、ツリー全体を捨てるだけではないからです。 – twain249
twain249:真。これが宿題であれば、私は樹木を使う本当の理由はないと思っています。 :)現実的な(しかしまれな)理由の1つは、システムが再起動後のファイル(つまりO(n)の起動時間)から状態を素早く復元する必要があり、通常の動作中にシステムが厳密な最悪ケースしたがって、ハッシュマップの償却されたO(1)は受け入れられませんが、ツリーの予測可能なO(log(n))が必要です)。 –
完全なハッシュ関数**または 'O(1)average'を与えられた** O(1)の償却時間は、この答えでもっと主に現れるはずです:-) –
バイナリツリー内のノードを検索すると、log(n)
(各レベルはそれより上のレベルの2倍の大きさ)のツリーがあるため、O(log(n))
です。したがって、n
要素をバイナリツリーに作成/挿入するには、O(nlog(n))
です。
バイナリ検索ツリー時間の複雑さは、要素がソートされずソートされていない場合はO(n^2)である場合はO(nlogn)になります。これは、BST O(n)時間内のソートされたリストに1つの要素を挿入するために、n個の要素O(n^2)に対して、平衡型またはほぼ平衡型のバイナリ検索ツリーの最大挿入時間をlognとすると、 n要素それはnlognです
- 1. バイナリツリー検索の複雑さ
- 2. バイナリツリーO(n)のInOrder Treeトラバーサルの時間複雑度?
- 3. 時間の複雑さと
- 4. 時間の複雑さは
- 5. 時間複雑
- 6. 時間複雑
- 7. 時間複雑
- 8. 時間の複雑さと空間の複雑さ、空間の複雑さの計算方法
- 9. 時間の複雑さを検証
- 10. 時間複雑ソート
- 11. 時間複雑ループ
- 12. このアプローチの時間の複雑さ
- 13. zaddのredisでの時間複雑さ
- 14. スライディングウィンドウの時間の複雑さ
- 15. fun()の時間の複雑さ?
- 16. 入力のエンコーディング(時間の複雑さ)
- 17. ファイル修正の時間の複雑さ?
- 18. 時間の複雑さの混乱
- 19. バイナリ検索の時間の複雑さ?
- 20. 実行時間の複雑さ
- 21. 時間の複雑さは、Python
- 22. Python3 list.count()時間の複雑さ
- 23. アルゴリズムの複雑さと実行時間
- 24. 計算時間の複雑さ
- 25. 時間の複雑さ(Java、Quicksort)
- 26. プログラムの時間複雑度
- 27. フィボナッチアルゴリズムの時間複雑度
- 28. 時間の複雑対数
- 29. デデューピングアルゴリズムの時間複雑度
- 30. プログラムの時間複雑度
私は本当に 'n(n log n)'より少ない数で2つのノードを次々に追加する方法を見ることができません。あなたの説明には何かがないようです。また、それは宿題なので、適切なタグを追加する必要があります。 – Voo
ツリー内の正しい場所を見つけるためにインオーダートラバーサルが必要なのはなぜですか?ノードは、O(log(n))の平均時間内に特定のノードを見つけることができるように配置する必要があります。あなたがそのような取り決めをすることができない場合、バイナリツリーはあなたのデータの正しい構造ではないかもしれません。 – Gigatron