結點的子樹的個數稱為該結點的度,乙個樹中所有結點的度中的最大值稱為樹的度。
(1) 在非空二叉樹中,第i層的結點總數不超過, i>=1。
(2) 深度為h的二叉樹最多有個結點(h>=1),最少有h個結點。
(3) 對於任意一棵二叉樹,如果其葉結點數為n0,而度數為2的結點總數為n2,則n0=n2+1。
有n個結點的完全二叉樹各結點如果用順序方式儲存,則結點之間有如下關係:
若i為結點編號則 如果i>1,則其父結點的編號為i/2
如果2i<=n,則其左孩子(即左子樹的根結點)的編號為2i;若2i>n,則無左孩子
如果2i+1<=n,則其右孩子的結點編號為2i+1;若2i+1>n,則無右孩子
⑴訪問根結點
⑵遍歷左子樹
⑶遍歷右子樹
⑴遍歷左子樹
⑵訪問根結點
⑶遍歷右子樹
⑴遍歷左子樹
⑵遍歷右子樹
⑶訪問根結點
森林轉二叉樹:將森林中的每棵樹變為二叉樹,將各二叉樹的根結點視為兄弟從左至右連在一起,就形成了一棵二叉樹。
樹轉二叉樹:在所有兄弟結點之間加一連線,對每個結點除了保留與其長子的連線外,去掉該結點與其它孩子的連線。
帶權路徑長度wpl最小的二叉樹稱為哈夫曼樹。
wpl=所有(葉子結點的權值*路徑長度)之和
h(k)=m%p(p為素數,p<=m)
裝填因子是指雜湊表中已存入的元素數n與雜湊表位址空間大小的比值,即a=n÷m,通常a控制在0.6到0.9的範圍內。
上完課後對雜湊表的aslasl不成功這塊不是很理解,於是我在網上查詢了一些資料
解決:首先asl的定義是
其中n為查詢表中元素個數,pi為查詢第i個元素的概率,ci是找到第i個元素的比較次數。
網上有一題關於雜湊表成功與不成功解法的例題:
將關鍵字序列(7、8、30、11、18、9、14)雜湊儲存到雜湊表中。雜湊表的儲存空間是乙個下標從0開始的一維陣列。雜湊函式為: h(key) = (keyx3) mod 7,處理衝突採用線性探測再雜湊法,要求裝填(載)因子為0.7。
(1) 請畫出所構造的雜湊表;
(2) 分別計算等概率情況下查詢成功和查詢不成功的平均查詢長度。
1.雜湊表:
α = 表中填入的記錄數/雜湊表長度 ==> 雜湊表長度 = 7/0.7 = 10
h(7) = (7x3) mod 7 = 0 h(8) = (8x3) mod 7 = 3 h(30) = (30x3) mod 7 = 6
h(11) = (11x3) mod 7 = 5 h(18) = (18x3) mod 7 = 5 h(9) = (9x3) mod 7 = 6
h(14) = (14x3) mod 7 = 0
按關鍵字序列順序依次向雜湊表中填入,發生衝突後按照「線性探測」探測到第乙個空位置填入。
0 1 2 3 4 5 6 7 8 9
7 14 8 11 30 18 9
2.查詢長度:
2.1 查詢成功的平均查詢長度
(待查詢的數字肯定在雜湊表中才會查詢成功)
查詢數字a的長度 = 需要和雜湊表中的數比較的次數;
步驟:比如 查詢數字:8
則 h(8) = (8x3) mod 7 = 3
雜湊表中位址3處的數字為8,進行了第一次比較:8 = 8,則查詢成功,查詢長度為1;
比如查詢數字:14
則 h(14) = (14x3) mod 7 = 0
雜湊表中位址0處的數字為7,進行第一次比較:7≠14
雜湊表中位址1處的數字為14,進行第二次比較:14=14 ,則查詢成功,查詢長度為2。
由此可得到如下資料:【2023年12月26日修改,多謝@一樓的朋友指正】
0 1 2 3 4 5 6 7 8 9
7 14 8 11 30 18 9
1 2 1 1 1 3 3
所以總的查詢成功的平均查詢長度= (1+1+1+1+3+3+2)/7 = 12/7
2.2查詢不成功的平均查詢長度
(待查詢的數字肯定不在雜湊表中)
【解題的關鍵之處】根據雜湊函式位址為mod7,因此任何乙個數經雜湊函式計算以後的初始位址只可能在0~6的位置
查詢0~6位置查詢失敗的查詢次數為:
位址0,到第乙個關鍵字為空的位址2需要比較3次,因此查詢不成功的次數為3.
位址1,到第乙個關鍵字為空的位址2需要比較2次,因此查詢不成功的次數為2.
位址2,到第乙個關鍵字為空的位址2需要比較1次,因此查詢不成功的次數為1.
位址3,到第乙個關鍵字為空的位址4需要比較2次,因此查詢不成功的次數為2.
位址4,到第乙個關鍵字為空的位址4需要比較1次,因此查詢不成功的次數為1.
位址5,到第乙個關鍵字為空的位址2(比較到位址6,再迴圈回去)需要比較5次,因此查詢不成功的次數為5.
位址6,到第乙個關鍵字為空的位址2(比較到位址6,再迴圈回去)需要比較4次,因此查詢不成功的次數為4.
於是得到如下資料:
0 1 2 3 4 5 6 7 8 9
7 14 8 11 30 18 9
3 2 1 2 1 5 4
則查詢不成功的平均查詢長度 = (3+2+1+2+1+5+4)/7 = 18/7
樹 二叉樹 查詢演算法總結
一 樹 樹的基本操作 二 二叉樹 最優二叉樹 哈夫曼樹 在所有含 n 個葉子結點 並帶相同權值的 m 叉樹中,必存在一棵其帶權路徑長度取最小值的樹,稱為 最優樹 赫夫曼演算法 以二叉樹為例 根據給定的 n 個權值 構造 n 棵二叉樹的集合f 其中每棵二叉樹中均只含乙個帶權值為 wi 的根結點,其左 ...
樹,二叉樹,查詢演算法總結
1.雙親表示法 求父節點方便。2.孩子表示法 求子節點方便。3.雙親孩子表示法 求父節點和子節點都很方便。4.二叉樹表示法 將一顆普通樹轉化為二叉樹。1.在二叉樹的第i層上至多有2 i 1 個結點 i 0 2.深度為k的二叉樹至多有2 k 1個結點 k 0 3.對於任意一棵二叉樹,如果其葉結點為n0...
樹(樹,二叉樹,二叉查詢樹)
1.定義 n n 0 個結點構成的有限集合。當n 0時,稱為空樹 2.對於任一棵非空樹 n 0 它具備以下性質 1 樹中有乙個稱為 根 root 的特殊結點,用 r 表示 2 其餘結點可分為m m 0 個互不相交的有限集t1,t2,其中每個集合本身又是一棵樹,稱為原來樹的子樹。3.樹的一些性質 1 ...