紅黑樹 是一項重要的數據結構
他提供快速的排序動作, 支持二分查找
紅黑樹的定義
1 節點不是紅的就是黑的
2 根節點和葉子節點為黑的
3 紅色節點的父親節點是黑的
4 從根節點到葉子節點 走過的黑色節點的數目是相同的
紅黑樹是一種很復雜的數據結構 最復雜的就是他的插入和刪除后的平衡問題
在插入時 的算法
首先 插入的是紅色的節點
2 如果它的父親是黑色的 就做第八步
3 如果它的父親是紅色的而且它有叔叔節點也為紅色的 那么把他的父親和叔叔節點都設為黑色的 祖父節點設為紅色的 然后對爺爺 重新進行第2步
4 如果他沒有樹樹節點或者叔叔節點為黑色 那么再看 如果他相對于父親的位置與父親相對于祖父的位置 如果一致 走到第6
5 如果不一致 那么對他于他的父親節點進行輪轉 轉到一致 然后 再把指向它的指針指向他的父親節點
6 然后把現在指針指向的節點的父親(由于他已經與父親換位了,父親是它)設為黑色, 爺爺設為紅色
7 然后再對爺爺重新進行第二步
8 確保根節點為黑色的
其實如果想明白了也不是很復雜
可是現在看到刪除 我又覺得復雜了 呵呵
路走了還不到一半 還得努力