二叉樹與二叉查找樹的操作是必須要熟練掌握的,接下來說的這些樹實現起來很困難,所以我們重點去了解他們的特點。
一、平衡二叉查找樹與紅黑樹跳躍表
平衡樹AVL:追求絕對的高度平衡,它具有穩定的logn的高度,因此有很好的查找性能O(logn),由於它每次插入刪除都需要再平衡,所以插入刪除代價較大。
紅黑樹:紅黑樹是類平衡樹,它不要求絕對平衡,所以他的查找性能略遜於AVL,但是它卻因此可以獲得較好的插入刪除性能O(logn),因此我認為它是一種折中的次略。
跳躍表:跳躍表查詢、插入、刪除有log(n)的復雜的,由於其結構相比紅黑樹簡單,所以插入刪除的效率較高,但是查詢略遜於紅黑樹,跳躍表的空間代價較大。
二、B樹與B+樹
B樹與B+樹的區別
結構:
①B樹的關鍵字信息分布在非終端節點上,B+樹的關鍵字信息全在葉子節點上,非終端節點可以看成是索引
②B+樹的葉子節點順序鏈接,因此有兩種遍歷方式,從根節點遍歷或按最小值遍歷
優點:
①B+樹更加適合做文件系統索引,B+樹的非終端節點含有關鍵信息的索引,因此其非終端節點的存儲空間更小,同一大小盤塊兒就能夠裝更多的內容,磁盤IO次數就越少。
②B+樹的每一次查找都是從根節點到葉子節點,因此有更加穩定的查詢性能。
為什么索引能夠提高查詢性能
B樹的每一個節點包含更多的關鍵字信息,統一節點順序存儲,假設一個節點在一個盤塊兒中,與二叉樹相比顯然可以降低IO操作的次數。