AVL ツリーのクラスの設計

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

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

で定義されました。

Image description

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

Designing Classes for AVL Trees

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

AVLTree での要素の検索は、通常のバイナリ ツリーでの検索と同じであるため、BST クラスで定義されている search メソッドも機能します。 AVLTree の場合。

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

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

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