2011-02-10 6 views
19

ツリートラバーサルの時間の複雑さは何ですか、私はそれが明らかでなければならないと確信していますが、私の貧弱な脳はすぐにそれを動作させることはできません。ツリートラバーサルの時間の複雑さはどのくらいですか?

+3

プログラミングの第1巻のページ326 – new299

+0

Knuthのコンピュータプログラミングの技術ですか?私は友人に良い例を与えるためにこれを見つけようとしています。 – Nicholas

+0

はいKnuthの "The Art of Computer Programming" – new299

答えて

20

実行しているトラバーサルの種類とアルゴリズムによって異なりますが、通常はO(n)となります。ここで、nはツリー内のノードの総数です。深度最初のトラバーサルの標準的な再帰的実装では、(スタック上の)メモリを最も深いレベルの順に消費します。バランスの取れたツリーではlog(n)になります。

+0

これはn-aryツリーに当てはまりますか?私は最大深度4の木であるデータ構造を持ち、友人が3つのforループを使用していて、そのアルゴリズムが 'O(n^3)'時間で実行されていると言いますが、 '' n時間、 'n'はツリー内のノードの総数になります – Nicholas

+4

@Nocholas、あなたは正しいですし、あなたの友人は間違っています。それはO(n)です。 – Uri

1

そうではないでしょうかnのノードを持つツリーの場合、nとなりますか?

あなたはそれぞれのツリーを訪れます。一度離れるでしょうか?だから私はそれが線形だと言うだろう。

+0

"nノード"ではなく "n leaves"でツリーにする必要があります。 – aamadmi

+0

あなたは間違ったterminoligyです: – Nanne

+0

@Nanne正しいアルゴリズムでは、実際には時間的に線形の複雑さです(各ノードを1回訪れています)が、まだ空間的に線形の複雑さはありません。スタックを使うのと同じです。 – Tim

関連する問題