測試 AVLTree 類
本節給出了使用 AVLTree 類別的範例。下面的程式碼給了一個測試程式。程式建立一個以整數陣列25、20 和5 初始化的AVLTree(第7 行),將元素插入第111 -20 行,並刪除第24-30 行中的元素。由於AVLTree 是BST 的子類,並且BST 中的元素是可迭代的,因此程式使用foreach 循環遍歷第35-37 行中的所有元素.
package demo; public class TestAVLTree { public static void main(String[] args) { // Create an AVL tree AVLTree<Integer> tree = new AVLTree<>(new Integer[]{25, 20, 5}); System.out.print("After inserting 25, 20, 5:"); printTree(tree); tree.insert(34); tree.insert(50); System.out.print("\nAfter inserting 34, 50:"); printTree(tree); tree.insert(30); System.out.print("\nAfter inserting 30"); printTree(tree); tree.insert(10); System.out.print("\nAfter inserting 10"); printTree(tree); tree.delete(34); tree.delete(30); tree.delete(50); System.out.print("\nAfter removing 34, 30, 50:"); printTree(tree); tree.delete(5); System.out.print("\nAfter removing 5:"); printTree(tree); System.out.print("\nTraverse the elements in the tree: "); for (int e: tree) { System.out.print(e + " "); } } public static void printTree(BST tree) { // Traverse tree System.out.print("\nInorder (sorted): "); tree.inorder(); System.out.print("\nPostorder: "); tree.postorder(); System.out.print("\nPreorder: "); tree.preorder(); System.out.print("\nThe number of nodes is " + tree.getSize()); System.out.println(); } }
插入 25、20、5 後:
Inorder(已排序):5 20 25
郵購日期:5 25 20
預購:20 5 25
節點數為3
插入 34、50 後:
Inorder(已排序):5 20 25 34 50
郵購:5 25 50 34 20
預購:20 5 34 25 50
節點數為5
插入30後
Inorder(已排序):5 20 25 30 34 50
郵購:5 20 30 50 34 25
預購:25 20 5 34 30 50
節點數為6
插入 10 個後
Inorder(已排序):5 10 20 25 30 34 50
郵購:5 20 10 30 50 34 25
預購:25 10 5 20 34 30 50
節點數為 7
刪除 34、30、50 後:
Inorder(已排序):5 10 20 25
郵購:5 20 25 10
預購:10 5 25 20
節點數為4
刪除 5 個後:
Inorder(已排序):10 20 25
郵購日期:10 25 20
預購:20 10 25
節點數為3
遍歷樹中的元素:10 20 25
下圖顯示了隨著元素添加到樹中,樹是如何演變的。加入25和20後,樹如下圖(a)所示。 5以20的左孩子插入,如下圖(b)所示。這棵樹不平衡。它在節點 25 處為左重。執行 LL 旋轉以產生 AVL 樹,如下圖 (c) 所示。
插入34後,樹如下圖(d)所示。插入50後,樹如下圖(e)所示。這棵樹不平衡。它在節點 25 處為右重。執行 RR 旋轉,得到 AVL 樹,如下圖 (f) 所示。
插入30後,樹如下圖(g)所示。這棵樹不平衡。進行RL旋轉得到AVL樹,如下圖(h)所示。
插入10後,樹如下圖(i)所示。這棵樹不平衡。進行LR旋轉得到AVL樹,如下圖(j)所示。
下圖顯示了樹如何隨著元素被刪除而演變。刪除34、30、50後,樹如下圖(b)所示。這棵樹不平衡。進行LL旋轉得到AVL樹,如下圖(c)所示。
刪除5後,樹如下圖(d)所示。這棵樹不平衡。進行RL旋轉得到AVL樹,如下圖(e)
以上是測試 AVLTree 類的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

在使用IntelliJIDEAUltimate版本啟動Spring...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...
