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