AVL樹

    AVL樹是一種二叉平衡查找樹,被廣泛使用。

    AVL樹的性質是:任意節點的左右子樹高度差不超過1。

    在進行節點插入與刪除時,AVL樹首先進行與二叉平衡查找樹相同的插入、刪除過程,然後自底向上進行回溯,回溯的過程中重新計算節點的左右子樹高度差,高度差超過2的節點進行平衡。

    AVL樹的平衡操作通過旋轉來完成。平衡時只需要考慮4種情況,既LL、RR、LR、RL,具體情形參見《數據結構與算法 - 面向對象的C++設計模式》。另外TAOCP一書對AVL樹有更詳盡的討論。

    下面給出AVL樹的一個示例代碼,演示AVL樹如何插入、刪除。代碼僅供參考,細節考慮不周處請忽略。

 

    avltree.cpp

    main函數可以按照如下方式書寫:

    AVL樹搜索、插入、刪除的時間複雜度爲O(lgn)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章