二叉樹的優點和缺點


二叉排序樹是一種比較有用的折衷方案。
數組的搜索比較方便,可以直接用下標,但刪除或者插入某些元素就比較麻煩。
鏈表與之相反,刪除和插入元素很快,但查找很慢。
二叉排序樹就既有鏈表的好處,也有數組的好處。
在處理大批量的動態的數據是比較有用。

 

文件系統和數據庫系統一般都采用樹(特別是B樹)的數據結構數據,主要為排序和檢索的效率。二叉樹是一種最基本最典型的排序樹,用於教學和研究樹的特性,本身很少在實際中進行應用,因為缺點太明顯了(看看教科書怎么說的)。就像冒泡排序一樣,雖然因為效率問題並不實用,單不失一種教學例子的好手段。

平衡二叉樹都有哪些應用場景

二叉樹支持動態的插入和查找,保證操作在O(height)時間,這就是完成了哈希表不便完成的工作,動態性。但是二叉樹有可能出現worst-case,如果輸入序列已經排序,則時間復雜度為O(N)

平衡二叉樹/紅黑樹就是為了將查找的時間復雜度保證在O(logN)范圍內。
所以如果輸入結合確定,所需要的就是查詢,則可以考慮使用哈希表,如果輸入集合不確定,則考慮使用平衡二叉樹/紅黑樹,保證達到最大效率

平衡二叉樹主要優點集中在快速查找。
如果你知道SGI/STL的set/map底層都是用紅黑樹(平衡二叉樹的一種)實現的,相信你會對這些樹大有興趣。

缺點:

順序存儲可能會浪費空間(在非完全二叉樹的時候),但是讀取某個指定的節點的時候效率比較高O(0)

鏈式存儲相對二叉樹比較大的時候浪費空間較少,但是讀取某個指定節點的時候效率偏低O(nlogn)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM