樹 二叉樹 查詢演算法總結

2022-08-10 18:18:18 字數 2853 閱讀 9048

結點的子樹的個數稱為該結點的度,乙個樹中所有結點的度中的最大值稱為樹的度。

(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 ...