-1
私はバイナリツリー検索ノードの削除の複雑さを計算しようとしています。私は3つすべてのケース(最悪、平均複雑さと最高)より複雑に計算したい。数式を選択する方法? T(n)=?バイナリツリー検索ノードの複雑さを削除
Nod* delete(Nod*& rad, const int& c)
{
//Nod has:c(information:int),nextSt(left:pointer to Nod),nextDr(right pointer to Nod)
Nod* aux;
if (rad == NULL)
return NULL;
else
if (c< rad->c && c != rad->c) {
rad->nextSt() = delete(rad->nextSt(), c);
return rad;
}
else
if (c > rad->c) {
rad->nextDr() = delete(rad->nextDr(), c);
return rad;
}
else
if (rad->nextSt() != NULL && rad->nextDr() != NULL) {
aux = minim(rad->nextDr());
rad->setElem(aux->element());
rad->nextDr() = delete(rad->nextDr(), rad->c);
return rad;
}
else {
aux = rad;
Nod* repl;
if (rad->nextSt() == NULL)
repl = rad->nextDr();
else
repl = rad->nextSt();
delete rad;
return repl;
}
}
をアルゴリズムへのバイナリ検索ツリーと複雑性理論Cormenの概要を参照してください詳細については、ログ(N)とN
の間にあります。ノードの削除は、バイナリツリーのO(深さ)です。バランスの取れたツリーの場合はO(log(n))ですが、アンバランスなツリーの場合はO(深さ)= O(n)です(nはノード数)。言い換えれば、挿入アルゴリズムを教えてください:)。 – lorro