紅黑樹的特點
紅黑樹是二叉查找樹,但在每個節點增加一個存儲為表示節點的顏色,可以是紅色或黑色(非紅即黑),通過對任意一條從根到葉子的路徑上各個節點着色方式的限制,紅黑樹確保沒有一條路徑會比其他路徑長兩倍。因此,它是一種弱平衡二叉樹,相對於嚴格的AVL樹來說,它的旋轉次數少,所以對於查找、插入、刪除較多的情況下,通常使用紅黑樹。
紅黑樹與AVL比較:
1. AVL是嚴格平衡的,頻繁的插入和刪除,會引起頻繁的rebalance,導致效率降低;紅黑樹是弱平衡的,算是一種折中,插入最多旋轉2次,刪除最多旋轉3次。
所以紅黑樹在查找、插入刪除的復雜度都是O(logn),且性能穩定,所以STL里面很多結構包括map底層都是使用的紅黑樹。