BST内の各ノードについて、ノードからリーフまでの最長パスの長さはどのくらいですか? (最悪の場合) 最悪の場合、ノードからリーフまでの線形パスがあると思います。ツリー内にn個のノードがある場合、実行時間はO(n * n)です。これは正しいですか?各ノードのBST内の最長パス
答えて
これは、「すべてのリーフに与えられたノード」または「与えられたリーフに対してすべてのノード」と仮定すると、線形時間で実行できます。それが「すべてのノードからすべてのリーフ」の場合、それは少し難しくなります。
これを行うには:「ターゲット」からルートに移動し、各ノードに距離をマークします。これらのノードのすべてを赤色に着色します。 (したがって、ルートはターゲットの深さを保持し、ターゲットは0を保持します)。赤いノードごとに、赤いノードの値から始めて、降りるにつれて1を加えて、赤ではない子を歩きます。
多くの作業を再利用できるため、O(n * n)ではありません。あなたは1つのパスを見つけられず、次に完全に始まり、次のパスを見つける。
私はあなたの意見を見ます。しかし、最適化を使用しないと、それはO(n * n)ではありませんか? –
はい、(ツリーが平衡している場合を除きます)ツリーが平衡している場合、パスはO(log n)を超えることはできませんので、最適化されていないバージョンはO(n log n) –
葉のノードから最長パスは、ノードから確実にするために最も深い葉
3.Thingsまでのルートから行くルート
2.Thenへのすべての道を行く
1.だろうこれ許可された場合、パスは任意の2つのノード間を移動して、無限に長くすることができたので、二回のノードを通過しないだろう、複数回
x
/\
b a
\
c
\
d
Cから葉までの最長のパスは2つのこと
1を行うだろう.cからxまで(この長さを数える)
2. xからその経路にcを持たない最も深い葉に移動する(この場合、葉はbである)
以下のコードは、1つのノードから最長の距離を求めるためにO(n) したがってすべてのノードの距離を求めるO(N^2)私の解決策は次のようになり
public int longestPath(Node n, Node root) {
int path = 0;
Node x = n;
while (x.parent != null) {
x = x.parent;
path++;
}
int height = maxHeight(root, n);
return path + height;
}
private int maxHeight(Node x, Node exclude) {
if (x == exclude)
return -1;
if (x == null)
return -1;
if (x.left == null && x.right == null)
return 0;
int l = maxHeight(x.left, exclude);
int r = maxHeight(x.right, exclude);
return l > r ? l + 1 : r + 1;
}
です。 cからxへのパス上に見つかったノードのリスト(そして単にcではない)です...私はコードを夕方に修正します – abhaybhatia
あろう。
1)ノードにサブツリーがあるかどうかを確認し、そうであればそのサブツリーの高さを見つけます。
2)theresのように、2つの高さ
- 1. BSTの最長パスの平均
- 2. ランダムなノードのパス長を取得するBST
- 3. DAG内で最長のパス
- 4. BSTノードの削除
- 5. BST:単一ノード
- 6. BSTのノードの削除
- 7. JavaでのBSTのノード
- 8. 各端末ノードの抽出パス
- 9. CノードのBSTからノードを削除
- 10. グラフ - ダイクストラシングルソース最長パスの
- 11. Javaコードの最長パス
- 12. 複数行のテックスボックス内の各行の最大長の設定
- 13. N個のノードを持つグラフの長さ2の最大パス数
- 14. ツリー内の2つのノード間のパスの長さを調べる方法は?
- 15. BSTにノードを挿入
- 16. BST削除/削除ノード - ルート
- 17. ツリー内の各ノードへのパスを再帰的に構築する方法 - JavaScript?
- 18. パス内の各ノードに条件が1つのみ表示できるCypherセット
- 19. 各ポリゴンの空間データフレームの最長行?
- 20. Javaのkeytoolの最大パス長
- 21. BSTの削除パスを更新する
- 22. Neo4j Cypherを使用して最初または最後のノードを持たない最長のパスを取得
- 23. BSTのノードを削除します
- 24. BSTのノードにデータを保存
- 25. BFSで最長のパスを探す
- 26. すべてのノード最短パス
- 27. Neo4j:パス内のノード間のリレーションシップ
- 28. 疎循環グラフ内で最も長い単純パス
- 29. ツリー構造の各ノードのパスを作成R
- 30. BST内のメモリとポインタ
まずの最大は、木で、唯一のパスは、どこからでもどこにもあります@abhaybhatia
リターンで述べたように、ツリーの残りの部分の高さを探します実際には「最長」のパスではなく、単に「その」パスがあります。最悪の場合、これは線形です。バランスの取れたBSTの場合はログ)n)。私はあなたが「ランニングタイム」とは何を意味するのか分からない。 –
私は、ツリー内の各ノードの最長のパスを見つけるためのコード実装の実行時間を意味します。 –