完全二叉樹:對於乙個樹高為h的二叉樹,如果其第0層至第h-1層的節點都滿。如果最下面一層節點不滿,則所有的節點在左邊的連續排列,空位都在右邊。這樣的二叉樹就是一棵完全二叉樹。定義:堆樹是一顆完全二叉樹;
堆樹中某個節點的值總是不大於或不小於其孩子節點的值;
堆樹中每個節點的子樹都是堆樹。
當父節點的鍵值總是大於或等於任何乙個子節點的鍵值時為最大堆。 當父節點的鍵值總是小於或等於任何乙個子節點的鍵值時為最小堆。如下圖所示,左邊為最大堆,右邊為最小堆。
紅黑樹是一種近似平衡的二叉查詢樹,它能夠確保任何乙個節點的左右子樹的高度差不會超過二者中較低那個的一陪。具體來說,紅黑樹是滿足如下條件的二叉查詢樹(binary search tree):
每個節點要麼是紅色,要麼是黑色。
根節點必須是黑色
紅色節點不能連續(也即是,紅色節點的孩子和父親都不能是紅色)。
對於每個節點,從該點至
null
(樹尾端)的任何路徑,都含有相同個數的黑色節點。每個葉子節點(nil)是黑色。 [注意:這裡葉子節點,是指為空(nil或null)的葉子節點!]
二叉樹 紅黑樹
也就是說,二叉排序樹中,左子樹都比節點小,右子樹都比節點大,遞迴定義。根據二叉排序樹這個特點我們可以知道,二叉排序樹的中序遍歷一定是從小到大的,比如上圖,中序遍歷結果是 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 每個紅色節點的兩個子節點都是黑色。從每個葉子到根的所有路徑上不能有兩個連續的紅...