一般的なグラフでのBFSとDFSの実行時間はO(n + m)であり、nはノードの数、mはエッジの数です。これは、ノードごとに隣接リストを考慮する必要があるためです。しかし、バイナリツリーで実行されたときのBFSとDFSの実行時間はどのくらいですか?ノードから出ることができるエッジの可能な数は一定(つまり2)であるため、O(n)である必要があると思います。これが正しい理解であるかどうかを確認してください。そうでない場合は、 、次に、バイナリツリーでのBFSとDFSの正しい時間計算量を説明してください。
[〜#〜] bfs [〜#〜] および [〜#〜] dfs [〜#〜] の時間計算量はO(|E|)
です、またはあなたの場合、O(m)
。
二分木では、m
は_n-1
_に等しいので、時間計算量はO(|V|)
に等しくなります。 m
は、頂点ごとの隣接するエッジの平均数ではなく、エッジの総数を指します。
はい、O(n)は正しいです。
また、エッジの数はノードの数-1としてより正確に表すことができることに注意してください。これは、ルートを除く各ノードが親からそれ自体にエッジを持ち、これらのエッジがすべてをカバーしていることを考慮すると非常に簡単にわかります。ツリーに存在するエッジ。