「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > deleteメソッドの実装

deleteメソッドの実装

2024 年 7 月 31 日に公開
ブラウズ:991

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

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

を呼び出します。

バランスパス(親要素);

Implementing the delete Method

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

Image description

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

バランスパス(右端の親);

リリースステートメント この記事は次の場所に転載されています: https://dev.to/paulike/implementing-the-delete-method-44k3?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3