map底層為什么要用紅黑樹實現


紅黑樹的特點

紅黑樹是二叉查找樹,但在每個節點增加一個存儲為表示節點的顏色,可以是紅色或黑色(非紅即黑),通過對任意一條從根到葉子的路徑上各個節點着色方式的限制,紅黑樹確保沒有一條路徑會比其他路徑長兩倍。因此,它是一種弱平衡二叉樹,相對於嚴格的AVL樹來說,它的旋轉次數少,所以對於查找、插入、刪除較多的情況下,通常使用紅黑樹。

紅黑樹與AVL比較:

1. AVL是嚴格平衡的,頻繁的插入和刪除,會引起頻繁的rebalance,導致效率降低;紅黑樹是弱平衡的,算是一種折中,插入最多旋轉2次,刪除最多旋轉3次。

所以紅黑樹在查找、插入刪除的復雜度都是O(logn),且性能穩定,所以STL里面很多結構包括map底層都是使用的紅黑樹。

 


免責聲明!

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



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