C語言資料結構之樹與二叉樹的基本概念

2021-09-26 19:55:31 字數 3103 閱讀 7652

結合下圖來對樹的一些基本術語和概念做說明

1.考慮節點k。根a到節點k的唯一路徑上的任意結點,稱為節點k的祖先結點。結合b是結點k的祖先結點,而結點k則是結點b的子孫結點。路徑上最接近結點k的結點e稱為k的雙親結點,而k為節點e的孩子結點,如結點k和結點l有相同的雙親結點e,及k和l為兄弟結點

2.結點的度:子結點的個數。

3.樹的度:結點的最大度數。

4.分支結點:度大於0的結點。

5.葉子節點:度為0的結點。

6.結點的層次:根節點為第一層。

7.結點的深度:從根節點開始,自頂向下逐層累加。

8.結點的高度:從葉節點開始,自底向上逐層累加。

9.樹的高度:樹種結點的最大層數。

10.有序樹:樹中結點的子樹從左到右是有次序的,不能交換,其結點與其子結點從左到右順序出現是有關聯的。

11.無序樹:與有序樹相反。

12.路徑和路徑長度:樹中兩個結點之間的路徑是由這兩個結點之間所經過的結點序列構成的,而路徑長度是路徑上所經過的邊的個數。

13.森林:給n棵樹加乙個根結點,就成為一棵樹,一棵樹去掉根結點,則成為森林。

1.樹的結點數等於所有結點的度數加1。

2.度為m中第i層的最多有m(i-1)個結點。

3.高度為h的m叉樹最多有(mh-1)/(m-1)個結點。

推導方式:

根據公式2可知,每層上最多有m(i-1),

則第一層有1個結點,

第二層有m個結點,

第三層上有m2個結點,

依次類推,

則第h上有m(h-1)個結點。

所有總的結點數等於 1+m+m2+m3+……+m(h-1)

根據等比數列求和公式可知總節點數為(mh-1)/(m-1)

4.具有n個結點的m叉樹的最小高度為h=⌈logm(n(m-1)+1)⌉ (向上取整)

推導方式

根據第三個公式n=(mh-1)/(m-1)

則h=⌈logm(n(m-1)+1)⌉ (向上取整)

1.二叉樹的度最大為2,且二叉樹有左右之分,不能顛倒。

2.二叉樹具有5種形態

3.二叉樹與度為2的樹的區別

a:度為2的樹至少有3個結點,而二叉樹有上述5種形態

b:度為2的樹若只有乙個子結點,則無所謂左或者右,二叉樹嚴格區分左右子樹。

結點節點都在最下邊的一層,且除葉子結點以外,每個結點的度數都是2.

自根結點按層次編號(從1開始)則有:對編號是i的結點,雙親為⌊i/2⌋(向下取整),左孩子是2i,右孩子是2i+1

設有乙個高度為h,有n個結點的二叉樹,當且僅當其每乙個結點都與高度為h的滿二叉樹中編號為1-n的結點一 一對應時,稱為完全二叉樹。

特點:

1.若i<=⌊n/2⌋,則i為分支結點,否則為葉子結點。

2.葉子結點只能出現層次最大的兩層上,最大層的葉子結點,都依次排列在該層最左邊的位置上。

3.若有度為1的結點,則最多有1個,並且這個結點只能有左孩子,不能有右孩子。

4.按層次編號後,一旦出現某結點(編號為i)為葉子結點或只有左孩子,則編號大於i的結點均為葉子結點

5.若n為奇數,則分支結點都同時有左孩子和右孩子,若n為偶數,則編號最大的分支結點只有左孩子,沒有右孩子,其他結點都有。

1.非空二叉樹上葉子結點數等於度為2的結點數加1,即n0=n2+1

推導過程

設有n個結點,b個分支

則有:b+1=n

分支都是由結點射出來的,

度為2的結點射出兩個分支

度為1的結點射出1個分支

度為0的結點射出0個分支

則有:b=n1+2n2

所以有n1+2n2+1=n

又因為n0+n1+n2=n,*

即:n1+2n2+1=n0+n1+n2

所以有n0=n2+1

2.非空二叉樹第k層上最多有2k-1個結點(k>=1)

3.高度為h的二叉樹至多有2h+1個結點。

4.對二叉樹進行編號則有:

a.當i>1時,結點i的雙親結點編號為⌊i/2⌋

b.當2i<=n時,結點i的左孩子編號為2i,否則沒有左孩子

c.當2i+1<=n時,結點i的右孩子編號為2i+1,否則沒有右孩子

d.結點i所在深度為⌊log2i⌋+1

e.具有n個(n>0)結點的完全二叉樹的高度為⌈log2(n+1)⌉

推導過程:

因為n=2h-1

所以2h=n+1

所以有h=⌈log2(n+1)⌉

資料結構 樹與二叉樹 (C )

一.樹的基本概念 樹 tree 是n n 0 個結點的有限集。它有唯一的根 1結點 和若干顆互不相交的子樹 如圖上子樹5 11 12等 組成。接下來以上面樹為例子介紹樹的基本術語。二.樹的儲存結構 順序儲存結構 假設以一組連續空間儲存數的結點,同時在每個結點中,附設乙個指示器指示其雙親結點到鍊錶中的...

資料結構考研 樹與二叉樹(C語言)

typedef strcture btnode btnode 把樹轉換成二叉樹的樣子,進行儲存 typedef struct btnode btnode a1 child a2 a1 sibling null a2 sibling a3 a3 sibling a4 a4 sibling null 取...

C語言 資料結構 二叉樹

一 樹的概念及結構 1.樹是一種非線性的資料結構,它是由n n 0 個有限結點組成乙個具有層次關係的集合。把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點 每個結點有零個或多個子結點 沒有父結點的結點稱為根結點 每乙個非根結點有且只有乙個父結點 除了根結點外,...