1、滿二叉樹:樹內的任何結點,或為樹葉(圖1中2689),或有兩個非空子樹。
滿二叉樹定理:非空滿二叉樹樹葉的數目等於其分支結點數目加1。
此外,乙個二叉樹第i層(根節點為0層)最多能有2的i次方個結點。
圖12、平衡二叉樹:如果樹中任何結點的兩個子樹高度差是0或者1。
對於圖1來說結點1左子樹高度為1,右子樹高度為4,所以它不是平衡的。
圖2為乙個平衡二叉樹:
圖23、 完全二叉樹:
若設二叉樹的高度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h 層所有的節點都連續集中在最左邊,這就是完全二叉樹。
完全二叉樹是由滿二叉樹而引出來的。對於深度為k的,有n個結點的二叉樹,當且僅當其每乙個結點都與深度為k的滿二叉樹中編號從1至n的結點一一對應時稱之為完全二叉樹。
若一棵二叉樹至多只有最下面的兩層上的結點的度數可以小於2,並且最下層上的結點都集中在該層最左邊的若干位置上,則此二叉樹成為完全二叉樹。
看來完全二叉樹首先得是平衡的,還要滿足乙個條件,最後一層的節點集中在左部分。對於圖2來說就是個完全二叉樹,但如果將結點6改為7的右子樹,那麼就不是乙個完全二叉樹,但是仍滿足平衡的條件。
4、二叉搜尋樹(有序二叉樹):
對於樹中每個結點n,所有儲存在該結點左子樹中的值小於n中儲存的值,而所有儲存在n右子樹中的值都大於n結點中的值。
結點鍵值的前驅,是它左子樹中最右側結點的鍵值。類似,它的後繼,是它右子樹中最左側結點中的鍵值。
圖1中的結點數字只是標號,並不代表所儲存的值。
二叉搜尋樹的遍歷:
5、堆(一種特殊的二叉樹,可以用來表示陣列):
堆本質是乙個完全二叉樹。按照結點資訊存放的關係分為最大堆、最小堆。
最大堆:每一結點值不比儲存在它所有子樹中的結點存放的值小。圖2就是個最大堆。
乙個隨意儲存資訊的完全二叉樹,通過調整結點的位置滿足最大堆或最小堆的過程,叫做恢復堆屬性。
堆屬性恢復後的結果不唯一,所以一組數可能有多種方式存放在堆中。
對於乙個陣列,先將其存入完全二叉樹中,然後:
1、恢復堆屬性(假設為最大堆);
2、如果根結點不是最後結點,將根結點與最後結點位置交換;
3、去掉最後結點,將其值存入陣列尾部;
4、對於剩餘的樹重新執行1-3,直到值完全取出。
則得到的陣列為原有陣列的從小到大的排序,這種排序方式就是堆排序。
對於乙個能夠實現堆排序的堆類來說,至少需要以下方法:結點新增並滿足堆屬性、根結點下移動、尾部結點刪除、恢復堆屬性等。
二叉樹中的一些概念
1 在有n個葉子節點的哈夫曼樹中,其節點總數為 a 不確定 b 2n 1 c 2n 1 d 2n 解析 如果此處的哈夫曼樹是指二叉樹則選擇b 無論哈夫曼樹是幾叉,其特點是一致的 假設為m叉 即樹中只存在度為0的結點 即葉結點 和度為m的結點.不妨設度為0的結點個數為x,度為m的結點個數為y,則存在乙...
二叉樹的一些基本概念彙總
子樹 只要包含了乙個節點,就必須包含這個節點下的所有節點 子結構 包含了乙個節點,可以只取左子樹或者右子樹,或者都不取 二叉樹的深度 高度 max 左子樹深度,右子樹深度 1 節點的度 該節點的分支的個數 度為0,1,2 節點的種類 根節點葉子節點 度為0 分支節點 度不為0的節點 孩子節點 兄弟節...
二叉樹的一些操作
標頭檔案 樹.h pragma once include include include include include include typedef char datatype typedef struct btnodebtnode btnode greattree datatype pre,i...