map的實現--紅黑樹


一、什么是紅黑樹???
  紅黑樹首先是一棵搜索二叉樹,樹中的每一個結點的顏色不是黑色就是紅色。它的特性如下:
  1、根節點是黑色
  2、每一個結點不是黑色就是紅色
  3、不能有連續的兩個紅色結點
  4、從任意一個結點出發,到后代中空指針的路徑上,均包含相同數量的黑色結點。
例如:
  
 
 
二、為什么要有紅黑樹???
  最開始我們學習了搜索二叉樹,但是最后我們發現搜索二叉樹有缺陷,之后我們又引入了AVL樹。AVL樹是一種高度平衡的二叉搜索樹,能夠滿足增刪查都是O(logN)的時間復雜度。既然AVL樹已經滿足了我們的期望,那么為什么還要引入紅黑樹呢?
  這是由於AVL樹是高度平衡的二叉搜索樹,維持一顆AVL樹的代價相比於紅黑樹來說是非常大的,由於它的高度平衡,使得它幾乎每次插入或者刪除都需要調整樹。而紅黑樹是一種近似平衡的二叉搜索樹,它滿足最長路徑不超過最短路徑的兩倍,而且它易於維護,在插入的時候也不是每次都需要調整樹。
  雖然紅黑樹整體性能上較AVL樹能差一點,但是也不是差的太多,而且紅黑樹勝在易於維護,所以折中下來紅黑樹還是用的比較多的。

 

搜索二叉樹

排序二叉樹

平衡二叉樹

 

參考:淺析紅黑樹

 


免責聲明!

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



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