Tがn個のノードと高さhを持つ2分探索木であると仮定します。 Tの各ノードxは 実数x.Keyを格納する。以下のアルゴリズムFunc1(T.root)の最悪の場合の時間複雑度を与える。 はあなたの答えを正当化する必要があります。BST時間複雑度
Func 1 (x)
if (x == NIL) return 0;
s1 <- Func1(x.left());
if (s1 < 100) then
s2 <- Func1(x.Right());
end
else
s2 <- 0;
end
s <- s1 + s2 + x.Key();
return (s);
x.left()& x.right()の戻り左と右の子ノードのX x.key()、最悪の場合の実行時間のためにノードX
に格納されたキーを返しますこれは基本的に最小()または最大()バイナリ検索ツリーアルゴリズムのように動作するので、これはO(ツリーの高さ)になると考えていました。しかし、再帰的なので、最悪の場合の実行時間としてO(h)を実際に書くのは少し躊躇しています。
私はそれについて考えてみると、関数が各x.leftに対してif(s1 < 100)文を実行すると、最悪の場合があります。これは、すべてのノードが訪問されたことを意味します。 (n)?