關於TreeMap的我的理解

羣裏的大哥說了,要想懂紅黑樹的應用,先要看TreeMap算法

想要解鎖更多新姿式?請訪問http://blog.tengshe789.tech/spa

OK,如今開始:code

紅黑樹簡介

紅黑樹又稱紅-黑二叉樹,它首先是一顆二叉樹,它具體二叉樹全部的特性。同時紅黑樹更是一顆自平衡的排序二叉樹。htm

​ 通常的二叉樹他們都須要知足一個基本性質--即樹中的任何節點的值大於它的左子節點,且小於它的右子節點。由於按照這個基本性質使得樹的檢索效率大大提升。但咱們知道在生成二叉樹的過程是很是容易失衡的,最壞的狀況就是一邊倒(只有右/左子樹),這樣勢必會致使二叉樹的檢索效率大大下降(O(n)),因此爲了維持二叉樹的平衡,大牛們提出了各類實現的算法,如:AVLSBT伸展樹TREAP紅黑樹等等。blog

平衡二叉樹必須具有以下特性:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,而且左右兩個子樹都是一棵平衡二叉樹。也就是說該二叉樹的任何一個等等子節點,其左右子樹的高度都相近。排序

平衡二叉樹和普通的區別

紅黑樹顧名思義就是節點是紅色或者黑色的平衡二叉樹,它經過顏色的約束來維持着二叉樹的平衡。對於一棵有效的紅黑樹二叉樹而言咱們必須增長以下規則rem

一、每一個節點都只能是紅色或者黑色get

二、根節點是黑色it

三、每一個葉節點(NIL節點,空節點)是黑色的。class

四、若是一個結點是紅的,則它兩個子節點都是黑的。也就是說在一條路徑上不能出現相鄰的兩個紅色結點。

五、從任一節點到其每一個葉子的全部路徑都包含相同數目的黑色節點。

​ 這些約束強制了紅黑樹的關鍵性質: 從根到葉子的最長的可能路徑很少於最短的可能路徑的兩倍長。結果是這棵樹大體上是平衡的。由於操做好比插入、刪除和查找某個值的最壞狀況時間都要求與樹的高度成比例,這個在高度上的理論上限容許紅黑樹在最壞狀況下都是高效的,而不一樣於普通的二叉查找樹。因此紅黑樹它是複雜而高效的,其檢索效率O(log n)。下圖爲一顆典型的紅黑二叉樹。

紅黑樹的結構

關於TreeMap

我沒看懂啊啊啊啊,我看懂了在更新(立FLAG🚩)

相關文章
相關標籤/搜索