-
二叉樹是最大度數為 2 的節點,即乙個節點最多有兩個分支。 二叉樹和2階樹的區別在於,二叉樹是順序樹,即左右有嚴格的區分,而2階的樹則沒有這個要求。
二叉排序樹以二叉樹為基礎,小於節點的分支放在節點的左側,大於節點的分支放在樹的右側,很容易找到。
我只給你寫了一些主要功能:
struct point {
int data;
struct point *lchild;
struct point *rchild;
建立二進位排序樹*
struct point *creattree(int data,int n)
int i;
struct point *t;
t=null;
for(i=0;idata=item;
p1->lchild=null;
p1->rchild=null;
if(t==null)
t=p1;else if(t!=null){
p2=t;while(1)
if(itemdata)
if(p2->lchild!=null)
p2=p2->lchild;
else{p2->lchild=p1;
break;
elseif(p2->rchild!=null)
p2=p2->rchild;
else{p2->rchild=p1;
break;
return t;
二叉樹是按順序遍歷的,如果節點的左子項的值大於它,或者右子項的值小於它,則它不是序數樹*
int inorder(struct point *t,int n)
struct point *stack[30];
int top=-1,i=0;
struct point *p;
p=t;do{
while(p!=null)
stack[++top]=p;
p=p->lchild;
p=stack[top--]
if(((p->lchild)->data)>p->data||(p->rchild)->data)data)
return 0;
p=p->rchild;
while(p!=null||top!=-1);
p=p->rchild;
printf("%d",p->data);
-
讓我們看一下資料結構樹。
相對基本的概念。 樹,叉子可以更多。
2 個叉子,那就是 2 個。
尋找 2 個分叉,我忘記了重點,似乎與索引 b+ 有關? 呵呵,忘了拉。
-
在電腦科學中,二叉樹是有序樹,每個節點最多有兩個子樹。 通常,子樹的根被稱為“左子樹”和“右子樹”。 二叉樹通常用作二叉查詢樹和二叉堆或二叉排序樹。
二叉樹的每個節點最多有兩個子樹(沒有度數大於2的節點),二叉樹的子樹分為左右兩部分,順序不能顛倒。 二叉樹的第 i 層最多有 2 個節點,其冪為 i -1; 深度為 k 的二叉樹最多有 2 個 (k) -1 個節點; 對於任何二叉樹 t,如果其終端節點(即葉節點)的數量為 n0,並且度數為 2 的節點數量為 n2,則 n0 = n2 + 1。
樹是由乙個或多個節點組成的有限集合,其中:
必須有乙個名為 root 的特定節點; 二叉樹。
其餘節點分為 n>=0 個不相交集 t1、t2 、..tn,這些集合中的每乙個都是一棵樹。 樹 t1, t2 、..TN 稱為根子樹。
樹的遞迴定義如下:(1)至少有乙個節點(稱為根)和(2)另乙個是不相交的子樹。
1.樹的度數,也就是寬度,就是節點的分支數。 樹的度數取組成樹的每個節點的最大度數,如上圖樹所示,其度數為2; 樹中中等為零的節點稱為葉節點或終端節點。
樹中度數不為零的節點稱為分支節點或非終端節點。 除根節點之外的分支節點統稱為內部節點。
2.樹的深度 – 構成樹節點的最大級別。
3.森林——指幾棵彼此不相交的樹的集合,如上圖所示,除去根節點a,原來的兩棵子樹T1、T2、T3為一片森林;
4.有序樹——指同一層中節點在樹中從左到右的順序,它們之間的順序不能互換,這樣的樹稱為有序樹,否則稱為無序樹。
-
完整的二叉樹是一種特殊型別的二叉樹。
定義:如果具有 n 個深度為 k 的節點的二叉樹對應於深度為 k 的完整二叉樹中編號為 1 n 的節點,則該二叉樹稱為完整二叉樹。
例如,如果任意節點右分支下的後代的最高階別為l,則左分支下的後代的最大級別必須為l或l+1。
完整的二叉樹在第 i 層最多可以有 2 個 (i-1) 節點,而在第 I 層的完整二叉樹最多可以有 2 個 i-1 節點。
全二叉樹:每層上所有節點都有兩個子節點的二叉樹,最後一層沒有任何子節點。
-
在二叉樹中,乙個根節點要麼沒有葉節點,要麼有兩個葉節點,沒有乙個只有乙個葉節點的根節點! 我不知道我這麼說的時候你是否明白? 這意味著,在乙個完整的二叉樹中,如果有乙個左葉節點,就一定有乙個右葉節點,如果沒有左葉節點,那麼就永遠不會有右葉節點!
-
如果二叉樹所有層的節點數達到除最後一層外的最大節點數,並且最後一層的所有節點都連續集中在最左邊,則為乙個完整的二叉樹。
-
除葉節點外,每個節點都有兩個子節點。
根據銘文,樹中的節點總數為n,所有分支節點的度數為m,樹中只有度為0的葉節點n0和度為m的分支節點nm。 彙總點數 n n0+nm; 由於每個分支指向乙個節點,而只有根節點不指向乙個分支,因此彙總點數n m*nm+1;根據這兩個方程,我們可以找到葉子的數量 n0 ((m 1)*n+1) m
全二叉樹和完全二叉樹是二叉樹的兩種特殊形式。 完整的二叉樹意味著每個節點有兩個子節點,或者沒有子節點(即每個節點的度數為 2 或 0)。 完整的二叉樹是指除最後一層之外的所有節點都具有最大數量的節點,並且最後一層的節點盡可能集中在左側。 >>>More
在一棵完整的二叉樹中,任何節點的左右子樹的深度都是相等的,所以你只需要做乙個backroot遍歷就可以知道乙個二叉樹是否是乙個完整的二叉樹。 >>>More