deleteメソッドの実装

WBOY
リリース: 2024-07-25 10:39:33
オリジナル
384 人が閲覧しました

AVL ツリーからの要素の削除は、ツリーの再バランスが必要になる場合があることを除けば、BST からの削除と同じです。 「BST からの要素の削除」セクションで説明したように、バイナリ ツリーから要素を削除するには、アルゴリズムは最初にその要素を含むノードを見つけます。 current はバイナリ ツリー内の要素を含むノードを指し、parentcurrent ノードの親を指します。 現在の ノードは、 ノードの左の子または右の子である可能性があります。
要素を削除するときは 2 つのケースが発生します。

ケース 1: 以下の図 (a) に示すように、現在の ノードには左の子がありません。 現在の ノードを削除するには、下の図 (b) に示すように、 ノードを 現在の ノードの右側の子に接続するだけです。 ノードからルートまでのパスに沿ったノードの高さが減少している可能性があります。ツリーのバランスを確保するには、

を呼び出します。

balancePath(parent.element);

Implementing the delete Method

ケース 2: 現在の ノードには左の子があります。 rightMostcurrent ノードの左側のサブツリーで最大の要素を含むノードを指し、parentOfRightMostrightMost の親ノードを指します。 ノード (以下の図 (a) に示す)。 rightMost ノードは右の子を持つことはできませんが、左の子を持つことはできます。 current ノードの要素値を rightMost ノードの要素値に置き換え、parentOfRightMost ノードを rightMost の左の子に接続します。 > ノードを削除し、下の図 (b) に示すように rightMost ノードを削除します。

Image description

parentOfRightMost からルートまでのパスに沿ったノードの高さが減少している可能性があります。ツリーのバランスを確保するには、

を呼び出します。

balancePath(右端の親);

以上がdeleteメソッドの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!