六 二叉樹和紅黑樹

2022-08-30 10:03:16 字數 1064 閱讀 7891

或者是一棵空樹;

或者是具有下列性質的二叉樹:

它是一棵空樹

或它的左右兩個子樹的高度差( 平衡因子)的絕對值不超過1

平衡二叉樹: 每個結點的平衡因子都為1、-1、0 的二叉排序樹。或者說每個結點的左右子樹的高度最多差1 的二叉排序樹。

平衡二叉樹的目的是為了減少二叉查詢樹層次,提高查詢速度

r-b tree,全稱是red-black tree,又稱為「紅黑樹」,它一種平衡二叉樹。紅黑樹的每個節點上都有儲存位表示節點的顏色,可以是紅(red)或黑(black)。

紅黑樹的特性:

每個節點或者是黑色,或者是紅色。

根節點是黑色。

每個葉子節點(nil)是黑色。 [注意:這裡葉子節點,是指為空(nil或null)的葉子節點!]

如果乙個節點是紅色的,則它的子節點必須是黑色的。

從乙個節點到該節點的子孫節點的所有路徑上包含相同數目的黑節點。

注意:

紅黑樹並不是真正的平衡二叉樹,但在實際應用中,紅黑樹的統計效能要高於平衡二叉樹,但極端效能略差。

由此我們可以得出結論:對於給定的黑色高度為 n 的紅黑樹,從根到葉子節點的最短路徑長度為 n-1,最長路徑長度為 2 * (n-1)。

紅黑樹通過上面這種限制來保證它大致是平衡的——因為紅黑樹的高度不會無限增高,這樣保證紅黑樹在最壞情況下都是高效的,不會出現普通排序二叉樹的情況。

由於紅黑樹只是乙個特殊的排序二叉樹,因此對紅黑樹上的唯讀操作與普通排序二叉樹上的唯讀操作完全相同,只是紅黑樹保持了大致平衡,因此檢索效能比排序二叉樹要好很多。

但在紅黑樹上進行插入操作和刪除操作會導致樹不再符合紅黑樹的特徵,因此插入操作和刪除操作都需要進行一定的維護,以保證插入節點、刪除節點後的樹依然是紅黑樹

二叉樹 紅黑樹

也就是說,二叉排序樹中,左子樹都比節點小,右子樹都比節點大,遞迴定義。根據二叉排序樹這個特點我們可以知道,二叉排序樹的中序遍歷一定是從小到大的,比如上圖,中序遍歷結果是 1 3 4 6 7 8 10 13 14 效能取決於 public class demo public static void m...

紅黑二叉樹

紅黑二叉樹 紅黑二叉樹的基本思想是想用標準的二叉查詢樹 完全由2 結點構成 和一些額外的資訊 替換3 結點 來表述2 3樹。或者說,我們將3 結點表示為由一條左斜的紅色鏈結相 兩個2 結點其中之一是另乙個的左子節點 連的兩個2 結點。這種表示的優點 我們無需修改就可以直接使用標準二叉查詢樹的get ...

二叉樹(三) 紅黑樹

紅黑樹是一種自平衡的二叉查詢樹,可解決二叉查詢樹因為多次插入新節點導致的不平衡問題。除了二叉查詢樹的基本特性外,還具有下列的特性 1 節點是紅色或者黑色 2 根節點是黑色 3 每個葉子節點都是黑色的空節點 nil節點 4 每個紅色節點的兩個子節點都是黑色。從每個葉子到根的所有路徑上不能有兩個連續的紅...