樹,二叉樹,查詢演算法總結

2022-08-22 13:45:07 字數 2262 閱讀 1758

1.雙親表示法:求父節點方便。

2.孩子表示法:求子節點方便。

3.雙親孩子表示法:求父節點和子節點都很方便。

4.二叉樹表示法:將一顆普通樹轉化為二叉樹。

1.在二叉樹的第i層上至多有2^(i-1)個結點(i>0)。

2.深度為k的二叉樹至多有2^k-1個結點(k>0)。

3.對於任意一棵二叉樹,如果其葉結點為n0,而度數為2的結點總數為n2,則n0=n2+1。

4.具有n個結點的完全二叉樹的深度必為 log(2n)+1。

5.對完全二叉樹,若從上至下、從左只右編號,則編號為i的節點,其左孩子編號必為2i,其有孩子編號必為2i+1;其雙親的編號必為i/2(i=1時為根 除外)。

1、概念:

它或者是一棵空樹;或者是具有下列性質的二叉樹:

(1)若左子樹不空,則左子樹上所有結點的值均小於左子樹所在樹的根結點的值;

(2)若右子樹不空,則右子樹上所有結點的值均大於右子樹所在樹的根結點的值;

(3)左、右子樹也分別為二叉排序樹;

2、b樹的查詢:

時間複雜度與樹的深度的有關。

步驟:若根結點的關鍵字值等於查詢的關鍵字,成功。

否則:若小於根結點的關鍵字值,遞迴查左子樹。

若大於根結點的關鍵字值,遞迴查右子樹。

若子樹為空,查詢不成功。

3、b樹的插入:

首先執行查詢演算法,找出被插結點的父親結點。

判斷被插結點是其父親結點的左兒子還是右兒子。將被插結點作為葉子結點插入。

若二叉樹為空。則首先單獨生成根結點。

注意:新插入的結點總是葉子結點,所以演算法複雜度是o(h)。

(1).如果刪除的結點沒有孩子,則刪除後演算法結束;

(2).如果刪除的結點只有乙個孩子,則刪除後該孩子取代被刪除結點的位置;

(3).如果刪除的結點有兩個孩子,則選擇該結點的後繼結點(該結點右孩子為根的樹中的左子樹中的值最小的點)或者前驅節點(該結點左孩子為根的樹中的右子樹中值最大的點)作為新的根,同時在該後繼結點或者前驅節點開始,執行前兩種刪除演算法,刪除演算法結束。

一棵m階的b+樹滿足下列條件:

(1)每個結點最多m個孩子。

(2)除根結點和葉子結點外,其它每個結點至少有m/2(取上限)個孩子。

(3)根結點至少有兩個孩子。

(4)所有的葉子結點在同一層,且包含了所有關鍵字資訊。

(5)有k個孩子的分支結點包含k個關鍵字。

帶權路徑長度最短的樹,權值較大的結點離根較近。

將樹轉化成二叉樹:右子樹一定為空

1.加線:在兄弟之間加一連線

2.抹線:對每個結點,除了其左孩子外,去除其與其餘孩子之間的關係

3.旋**以樹的根結點為軸心,將整樹順時針轉45°

森林轉換成二叉樹:

1.將各棵樹分別轉換成二叉樹

2.將每棵樹的根結點用線相連

3.以第一棵樹根結點為二叉樹的根

(1)ll情況

設定根節點root的左子節點為新的根節點newroot;

將newroot節點的右子樹作為root節點的左子樹,將root節點作為newroot的右子樹,即降低「左子樹」高度,提公升「右子樹」高度,使得新的左右子樹高度趨於平衡。

(2)rr情況

設定根節點root的右子節點為新的根節點newroot;

將newroot節點的左子樹作為root節點的右子樹,將root節點作為newroot的左子樹,即降低「右子樹」高度,提公升「左子樹」高度,使得新的左右子樹高度趨於平衡。

(3)lr情況

需要首先對左子樹進行左旋操作,調整二叉樹為ll情況,再對二叉樹執行右旋操作。

(4)rl情況

需要首先對右子樹進行右旋操作,調整二叉樹為rr情況,再對二叉樹執行左旋操作。

void initexptree(btree &t,string str)

else

else if(precede(ch.top(),str[i])=='=')

else}}

while(ch.top()!='#')

t=num.top();

}double evaluateextree(btree t)

a=evaluateextree(t->lchild);

b=evaluateextree(t->rchild);

switch(t->data)

return a/b;}}

樹 二叉樹 查詢演算法總結

一 樹 樹的基本操作 二 二叉樹 最優二叉樹 哈夫曼樹 在所有含 n 個葉子結點 並帶相同權值的 m 叉樹中,必存在一棵其帶權路徑長度取最小值的樹,稱為 最優樹 赫夫曼演算法 以二叉樹為例 根據給定的 n 個權值 構造 n 棵二叉樹的集合f 其中每棵二叉樹中均只含乙個帶權值為 wi 的根結點,其左 ...

樹 二叉樹 查詢演算法總結

結點的子樹的個數稱為該結點的度,乙個樹中所有結點的度中的最大值稱為樹的度。1 在非空二叉樹中,第i層的結點總數不超過,i 1。2 深度為h的二叉樹最多有個結點 h 1 最少有h個結點。3 對於任意一棵二叉樹,如果其葉結點數為n0,而度數為2的結點總數為n2,則n0 n2 1。有n個結點的完全二叉樹各...

樹(樹,二叉樹,二叉查詢樹)

1.定義 n n 0 個結點構成的有限集合。當n 0時,稱為空樹 2.對於任一棵非空樹 n 0 它具備以下性質 1 樹中有乙個稱為 根 root 的特殊結點,用 r 表示 2 其餘結點可分為m m 0 個互不相交的有限集t1,t2,其中每個集合本身又是一棵樹,稱為原來樹的子樹。3.樹的一些性質 1 ...