(三)二叉樹的基本運算及實現
二叉樹是乙個有限的結點的集合,這個集合或者為空,或者由乙個根節點和兩棵互不相交的稱為左子樹和右子樹的二叉樹組成。
二叉樹的表示法和樹的表示法一樣,有樹形表示法、文氏圖表示法、凹入表示法和括號表示法等。
滿二叉樹:
在一棵二叉樹中,如果所有分支結點都有左孩子和右孩子結點,並且葉子結點都集中在二叉樹的最下一層,這樣的二叉樹稱為滿二叉樹。我們可以對滿二叉樹的結點進行層序編號,約定從樹根為1開始,按照層數從大到小、同一層從左到右的次序進行。
特點:①葉子結點都在最下一層。
②只有度為0和度為2的結點
完全二叉樹:
若二叉樹中最多只有最下面兩層的結點的度數可以小於2,並且最下面一層的葉子結點都依次排列在該層最左邊的位置上,則這樣的二叉樹稱為完全二叉樹。完全二叉樹的編號方法和滿二叉樹相同。
特點:①葉子結點只可能在最下面兩層**現
②對於最大層次中的葉子結點,都依次排列在該層最左邊的位置上
③如果有度為1的結點,只可能有乙個,且該結點只有左孩子而無右孩子
④當結點總數n為奇數時,單分支結點數n1=0;當n為偶數時,n1=1.
滿二叉樹時完全二叉樹的一種特例,並且完全二叉樹與同高度的滿二叉樹的對應位置結點有同一編號。
性質1:非空二叉樹上的葉子結點數等於雙分支結點數加1
證明:n:結點總數
n0:二叉樹上的葉子結點數
n1:單分支結點數
n2:雙分支結點數
①所有結點度之和=n-1
②n=n0+n1+n2
③總分支數=n1+2n2
則n=n2+1
性質2:非空二叉樹第i層上最多有2i-1個結點(i>=1)
性質3:高度為h的二叉樹最多有2h-1個結點(h>=1)
性質4:具有n個(n>0)結點的完全二叉樹的高度為log2(n+1)或(log2n)+1
#include
using
namespace std;
#define maxsize 100
class
node
;
class
tree
;
tree::
tree()
tree::
~tree()
void tree::
destroytree
(node *n)
}
void tree::
createtree
(char
*str)
else
}break;}
j++;}
}
void tree::
disptree()
void tree::
dispnode
(node *n)
dispnode
(n->rchild)
;//遞迴輸出右子樹
cout <<
")";}}
}
node* tree::
findnode
(char x)
node* tree::
findnodere
(node *n,
char e)
else
if(n-
>data==e)
else
else
}}
int tree::
treedeep()
int tree::
treedeepre
(node *n)
else
}
void tree::
preorder()
void tree::
preorderre
(node *n)
}
void tree::
inorder()
void tree::
inorderre
(node *n)
}
void tree::
postorder()
void tree::
postorderre
(node *n)
}
int tree::
nodecount()
int tree::
nodecountre
(node *b)
else
}
int tree::
displeaf()
int tree::
displeafre
(node *n)
displeafre
(n->lchild)
;//輸出左子樹的葉子結點
displeafre
(n->rchild)
;//輸出右子樹的葉子結點
}return num;
//返回葉子結點數
}
int
main()
二叉樹 基本運算
一 括號表示法建二叉樹 核心 void make btree print b view code 二 查詢節點 核心 btnode find node btnode b1,char x 查詢節點數值等於x的節點 view code 三 求樹高 核心 int get high const btnode...
樹和二叉樹的基本運算實現
問題描述 樹和二叉樹的基本運算實現 設計乙個程式exp7 6.cpp,構造一棵哈夫曼樹,輸出對應的哈夫曼編碼和平均查詢長度。並用表7.8所示的資料進行驗證 表7.8 單詞及出現的頻度 單詞theofa toand inthat heis aton forhis arebe 出現頻度 1192 677...
二叉樹的基本運算
今天資料結構實驗課,做實驗,二叉樹的基本運算,題目要求挺長的,上課坐著沒事幹,寫了一點,放這以後還能看看。呵呵 題目要求 問題描述 建立一棵二叉樹,試程式設計實現二叉樹的如下基本操作 1.按先序序列構造一棵二叉鍊錶表示的二叉樹t 2.對這棵二叉樹進行遍歷 先序 中序 後序以及層次遍歷,分別輸出結點的...