樹的特性:
1)一棵樹中的任意兩個結點有且僅有唯一的一條路徑連通;
2)一棵樹如果有nn個結點,則它一定有n−1n−1條邊;
3)在一棵樹中加一條邊將會構成乙個迴路。
1、二叉樹:
二叉樹是一種特殊的樹,二叉樹的特點是每個結點最多有兩個兒子。
二叉樹使用範圍最廣,一顆多叉樹也可以轉化為二叉樹。
(1)滿二叉樹:
二叉樹中每個內部節點都有兩個兒子。滿二叉樹所有的葉節點都有相同的深度。
滿二叉樹是一棵深度為h且有2h−12h−1個結點的二叉樹。
完全二叉樹:
若設二叉樹的高度為hh,除了第hh層外,其他層的結點數都達到最大個數,第h層從右向左連續 缺若干個結點,則為完全二叉樹。
特點:1)如果一棵完全二叉樹的父節點編號為kk,則其左兒子的編號是2k2k,右兒子的結點編號為2k+12k+1,
公式總結:
2)已知完全二叉樹的總節點數為n求葉子節點個數:
當n為奇數時:(n+1)/2
當n為偶數時 : (n)/2
3)已知完全二叉樹的總節點數為n求父節點個數:為:n/2
4)已知完全二叉樹的總節點數為n求葉子節點為2的父節點個數:
當n為奇數時:n/2
當n為偶數時 : n/2-1
5)如果一棵完全二叉樹有n個結點,那麼這棵二叉樹的深度為【log2(n+1)log2(n+1)】(向上取整)
2、堆——神奇的優先佇列
堆是一種特殊的完全二叉樹。
1)完全二叉樹——陣列儲存表示(按照層次遍歷的方式,結點編號為 ii 的結點的左子結點編號為 2∗i2∗i , 右子結點編號為 2∗i+12∗i+1. )
2)一般二叉樹(尤其是形態劇烈變化的二叉樹)——鍊錶表示。
3)層次遍歷的二叉樹——佇列。
二叉鍊錶:二叉樹的結點至少包含三個域,分別存放節點的資料data,左結點指標leftchild, 和 右結點指標rightchild.這種鍊錶結構稱為二叉鍊錶。——缺點:難以找到父結點。
三叉鍊錶: 比二叉鍊錶多乙個父指標域parent. 稱為三叉鍊錶。
二叉樹的三叉鍊錶表示示意圖:
二叉樹的鏈式儲存:
#define datatype char //定義二叉樹元素的資料型別為字元
typedef struct node //定義結點由資料域,左右指標組成
bitree;
資料結構相關知識上
資料結構 順序儲存結構 陣列 1,所有元素緊密排列在同乙個記憶體中 2,邏輯結構內的前驅後繼關係對應儲存結構也是前驅後繼關係 鏈式儲存結構 指標 1,所有元素不一定要緊密排列在同一塊記憶體中 2,邏輯結構內的前驅後繼關係不一定嚴格對應儲存結構的前驅後繼關係。以下為我程式編寫的命名方式 sq 順序 l...
資料結構相關知識點
線性表其長度可根據需要增長或縮短,對線性表可以訪問 插入 刪除等操作。定義 由n n 0 個資料特性相同的元素構成的有限序列稱為線性表。對於非空是線性表或線性結構,特點是 存在唯一乙個被稱作 第乙個 的資料元素 2 存在唯一乙個被稱作 最後乙個 的資料元素 3 除第乙個之外,結構中的每一資料元素均只...
資料結構 樹的基礎知識
樹 tree 是n n 0 個結點的有限集。n 0又稱為空樹。在任意一課非空的樹中 1 有且僅有乙個特定的稱為跟 root 的結點 2 當n 1時,其餘結點可分為m m 0 個互不相交的有限集,其中每乙個集合本身又是一棵樹,並且稱為根的子樹 subtree 1 子樹是不相交的。2 除根節點外,每個節...