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