バイナリツリー内のノードを削除するには、ノードを検索する必要があります。これは最小O(log N)と最大O(N)で可能です。ノードによっては、ポインタを再配置する必要があります。どのようにしてその時間複雑さを計算しますか?バイナリツリー内のノードを削除する時間はどれくらいですか
答えて
ほとんどの複雑さは、ノードを検索しています。親ノードが保持されている限り、それが見つかると、ノードを削除するための割り当てはほんの数です。だからそれは一定の順序です。
どのように削除を行っているかによって異なります。最も一般的な方法は、ノードの後継ノードを見つけ、そのノードをその後継ノードに置き換えることです。これはO(h)で行うことができます。ここで、hはツリーの高さです。最悪の場合、これはO(n)ですが、バランスの取れた木では最悪の場合O(lg n)です。
ここで、「最悪の検索時間は最大O(N)」になっていますか?それはBSTでは決して起こらないはずです。最悪の場合、検索と削除には最大O(h)でなければなりません。ここで、「h」はツリーの高さです。このhelpful articleを参照してください。
O(h)は、病理学的に変性した樹木ではO(n)とすることができる。 – templatetypedef
はい最良ケースの複雑さO(LOGN)(ときに完全にバランス)と
最悪の場合の複雑性は、(N)
1 Oである2 - - 3 - BST欠失を有する4
しかし主な問題( Hibbard Deletion)は、対称ではないということです。多くの挿入および削除後に、BSTはバランスが取れなくなります。研究者は、樹木のランダムな挿入と削除の高さが十分に長いと、sqrt(n)となることを証明した。今度はすべての操作(検索、挿入、削除)はO(logn)と比べて良くない時間であるsqrt(n)となります。
これは、BSTの効率的な対称的な削除の問題を非常に長く(約50年)公開しています。保証されたバランスの取れた木のために、我々はRedBlackツリー等を使用しなければなりません。
- 1. バイナリツリー内のノードを削除する
- 2. C - バイナリツリーからノードを削除する
- 3. 子ノードを持つバイナリツリーのノードを削除する
- 4. バイナリツリーからリーフを削除する
- 5. バイナリツリーからノードを削除する - ツリーの戻り値を返す
- 6. O(1)補助記憶空間を使用してバイナリツリー内のすべてのノードを削除しますか?
- 7. リンクリストのノードを削除せずにノードを削除するにはどうすればよいですか?
- 8. Softlayerでユーザーを完全に削除するにはどのくらい時間がかかりますか?
- 9. ノード赤からノードを削除する
- 10. sqlserver.exeがロックローカルデータベースファイルを削除するのにどれくらい時間がかかりますか?
- 11. elasticsearchがレコードを削除するのにどれくらい時間がかかりますか?
- 12. kubernetes。 kubernetesノード間でサポートされる最大距離/待ち時間はどれくらいですか?
- 13. どのくらいのスタックで再帰が使用されますか(リストからノードを削除する)?
- 14. 時間から5時間を削除する
- 15. ノードからノードを削除するにはどうすればいいですか?
- 16. このコードから時間を削除するにはどうすればよいですか?
- 17. RのGPSトラックデータから夜間の時刻を削除するにはどうしたらいいですか?
- 18. printkコマンドの実行時間はどれくらいですか?
- 19. ノードを削除するにはどうしたらいいですか?
- 20. 何かがどれくらいの時間を要するか
- 21. JavaでNeo4jのノードと関係を削除/削除するにはどうすればよいですか?
- 22. ios swiftのFirebaseタイムスタンプから時間を削除するには?
- 23. Nokogiriでノードを削除するにはどうすればよいですか?
- 24. MongoDBノードJS - ドキュメントオブジェクト内のオブジェクトからエントリを削除する
- 25. 入力XML内のノードからテキストを削除する
- 26. 2つのインデックス間のリンクリストのノードを削除するにはどうすればよいですか?
- 27. 24時間経過後、Firebaseデータベースからノードを削除します
- 28. ツリー内の無効な子ノードを削除するにはどうすればいいですか
- 29. リンクされたリストから特定のノードを削除するにはどうすればよいですか?
- 30. リンクリスト内のすべてのノードを「完全に」削除するにはどうすればよいですか?
+1、ニースと簡潔です。 –