AVL ツリーのクラスの設計

WBOY
リリース: 2024-07-25 06:38:22
オリジナル
133 人が閲覧しました

AVLツリーは二分探索木であるため、AVLTreeBSTのサブクラスとして設計されています。 AVL ツリーはバイナリ ツリーであるため、下の図に示すように、AVLTree クラスを定義して BST クラスを拡張できます。 BST クラスと TreeNode クラスは Section.

で定義されました。

Image description

ツリーのバランスをとるには、各ノードの高さを知る必要があります。便宜上、各ノードの高さを AVLTreeNode に保存し、AVLTreeNodeBST.TreeNode のサブクラスとして定義します。 TreeNodeBST の静的内部クラスとして定義されていることに注意してください。 AVLTreeNodeAVLTreeの静的内部クラスとして定義されます。 TreeNode には、AVLTreeNode によって継承されるデータ フィールド elementleft、および right が含まれています。したがって、下の図に示すように、AVLTreeNode には 4 つのデータ フィールドが含まれます。

Designing Classes for AVL Trees

BST

クラスでは、createNewNode()メソッドがTreeNodeオブジェクトを作成します。このメソッドは AVLTree クラスでオーバーライドされ、AVLTreeNode を作成します。 BSTクラスのcreateNewNode()メソッドの戻り値の型はTreeNodeですが、AVLTreeクラスのcreateNewNode()メソッドの戻り値の型はAVLTreeNodeであることに注意してください。 AVLTreeNodeTreeNode のサブクラスであるため、これで問題ありません。 AVLTree 内の要素の検索は、通常のバイナリ ツリー内の検索と同じであるため、

BST

クラスで定義された search メソッドは AVLTree でも機能します。 insert メソッドと delete メソッドは、要素を挿入および削除し、必要に応じて再バランス操作を実行してツリーのバランスを確保するためにオーバーライドされます。

以上がAVL ツリーのクラスの設計の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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