首頁 >Java >java教程 >設計 AVL 樹的類

設計 AVL 樹的類

WBOY
WBOY原創
2024-07-25 06:38:22356瀏覽

由於 AVL 樹是二元搜尋樹,因此 AVLTree 被設計為 BST 的子類。 AVL樹是二元樹,因此可以定義AVLTree類來擴展BST類,如下圖所示。 BSTTreeNode 類別在部分中定義。

Image description

為了平衡樹,你需要知道每個節點的高度。為了方便起見,將每個節點的高度儲存在 AVLTreeNode 中,並將 AVLTreeNode 定義為 BST.TreeNode 的子類別。請注意,TreeNodeBST 中定義為靜態內部類別。 AVLTreeNode 將被定義為 AVLTree 中的靜態內部類別。 TreeNode 包含資料欄位 elementleftright,它們由 AVLTreeNode 繼承。因此,AVLTreeNode包含四個資料字段,如下圖所示。

Designing Classes for AVL Trees

BST 類別中,createNewNode() 方法建立一個 TreeNode 物件。在 AVLTree 類別中重寫此方法以建立 AVLTreeNode。注意,BST類別中的createNewNode()方法的回傳類型是TreeNode,但 類別中的> 方法是AVLTreeNode。這很好,因為 AVLTreeNodeTreeNode 的子類別。 AVLTree

中搜尋元素與在常規二元樹中搜尋相同,因此

BST 類別中定義的search 方法也適用於AVLTree 重寫 insert

delete 方法來插入和刪除元素,並在必要時執行重新平衡操作以確保樹平衡。

以上是設計 AVL 樹的類的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn