紅黑樹(六)之 參考資料
概要
前面幾章對紅黑樹進行了比較全面的介紹,包括紅黑樹的理論以及C/C++/Java的實現。這部分將我學習紅黑樹期間的一些參考資料和程式碼分享出來,供大家參考。
參考說明
在寫紅黑樹這幾篇文章的過程中,參考了許多資料:主要有《演算法導論》、《資料結構與演算法分析-C語言描述》以及網上的一些文章;此外,還參考了"Linux核心中的紅黑樹原始碼"、"JDK中的紅黑樹原始碼"、"STL中的紅黑樹原始碼"。
1. Linux核心中的紅黑樹原始碼
在"紅黑樹(三)之 Linux核心中紅黑樹的經典實現"這篇文章中,我已經將Linux核心中的紅黑樹原始碼移植出來了,供大家參考。若你想自己親自研究,可以獲取Linux核心原始碼後再進行查閱。
(02) 標頭檔案路徑:include/linux/rbtree.h
(03) 實現檔案路徑:lib/rbtree.c
2. JDK中的紅黑樹原始碼
JDK中的紅黑樹在實現TreeMap和TreeSet時有用到。在我以前寫的"Java 集合系列"的"Java 集合系列12之 TreeMap詳細介紹(原始碼解析)和使用示例"中有介紹過。如果你想一探究竟,參考檢視JDK原始碼。
(01) JDK的原始碼可以通過解壓"JDK包中的src.zip"獲取。當然,你也可以通過openjdk來檢視JDK原始碼。
(02) TreeMap的路徑:java/util/TreeMap.java
3. STL中的紅黑樹原始碼
這部分我沒有仔細研究。若你感興趣,可以研究之後,再來分享給大家。
(01) ubuntu下STL中紅黑樹的原始碼路徑:/usr/include/c++/4.6/ext/pb_ds/detail/rb_tree_map_
說明:上面是我自己使用的ubuntu(12.04版本)下STL原始碼路徑,不同的系統可能略有不同。"/usr/include/c++/4.6/"是g++4.6的路徑,而"ext/pb_ds/detail/rb_tree_map_"則是紅黑樹原始碼路徑。
(02) 我將rb_tree_map_中的程式碼打包出來,點選下載。