樹和二叉樹

2021-10-01 05:26:56 字數 3623 閱讀 8227

樹的邏輯結構

1.樹的定義:n(n≥0)個結點的有限集合。,當n=0時,稱為空樹;

2.任意一棵非空樹滿足以下條件:

⑴ 有且僅有乙個特定的稱為根的結點;

⑵ 當n>1時,除根結點之外的其餘結點被分成m(m>0)個互不相交的有限集合t1,t2,… ,tm,其中每個集合又是一棵樹,並稱為這個根結點的子樹。

3.結點的度:結點所擁有的子樹的個數。

4.樹的度:樹中各結點度的最大值。

5.葉子結點:度為0的結點,也稱為終端結點。

6.分支結點:度不為0的結點,也稱為非終端結點。

7.孩子、雙親:樹中某結點子樹的根結點稱為這個結點的孩子結點,這個結點稱為它孩子結點的雙親結點;

8.兄弟:具有同乙個雙親的孩子結點互稱為兄弟。

9.路徑:如果樹的結點序列n1, n2, …, nk有如下關係:結點ni是ni+1的雙親(1<=i10.祖先、子孫:在樹中,如果有一條路徑從結點x到結點y,那麼x就稱為y的祖先,而y稱為x的子孫。

11.結點所在層數:根結點的層數為1;對其餘任何結點,若某結點在第k層,則其孩子結點在第k+1層。

12.樹的深度:樹中所有結點的最大層數,也稱高度。

13.層序編號:將樹中結點按照從上層到下層、同層從左到右的次序依次給他們編以從1開始的連續自然數。

14.有序樹、無序樹:如果一棵樹中結點的各子樹從左到右是有次序的,稱這棵樹為有序樹;反之,稱為無序樹。

15.森林:m (m≥0)棵互不相交的樹的集合。

16.同構:對兩棵樹,若通過對結點適當地重新命名,就可以使這兩棵樹完全相等(結點對應相等,結點對應關係也相等),則稱這兩棵樹同構。

17.樹的遍歷:從根結點出發,按照某種次序訪問樹中所有結點,使得每個結點被訪問一次且僅被訪問一次。

18.樹通常有前序(根)遍歷、後序(根)遍歷和層序(次)遍歷三種方式。

19.樹的前序遍歷操作定義為:

若樹為空,則空操作返回;否則

⑴ 訪問根結點;

⑵ 按照從左到右的順序前序遍歷根結點的每一棵子樹。

20.樹的後序遍歷操作定義為:

若樹為空,則空操作返回;否則

⑴ 按照從左到右的順序後序遍歷根結點的每一棵子樹;

⑵ 訪問根結點。

21.樹的層序遍歷操作定義為:

從樹的第一層(即根結點)開始,自上而下逐層遍歷,在同一層中,按從左到右的順序對結點逐個訪問。

樹的儲存結構

1.雙親表示法:

用一維陣列來儲存樹的各個結點(一般按層序儲存),

陣列中的乙個元素對應樹中的乙個結點,

每個結點記錄兩類資訊:結點的資料資訊以及該結點的雙親在陣列中的下標。

2. 孩子表示法-多重鍊錶表示法(節點中的指標域表示孩子):

鍊錶中的每個結點包括乙個資料域和多個指標域,每個指標域指向該結點的乙個孩子結點。

特點:將每個結點的所有孩子放在一起,構成線性表。

基本思想:

把每個結點的孩子排列起來,看成是乙個線性表,且以單鏈表儲存,則n個結點共有 n 個孩子鍊錶。

3.兄弟表示法:

(1)某結點的第乙個孩子是惟一的

(2)某結點的右兄弟是惟一的

(3)設定兩個分別指向該結點的第乙個孩子和右兄弟的指標

4.儲存:

順序儲存:本質上是靜態指標

雙親表示法

雙親、孩子表示法

鏈式儲存:

多重鏈表示法

孩子鍊錶表示法

孩子兄弟表示法

二叉樹

1.定義:二叉樹是n(n≥0)個結點的有限集合,該集合或者為空集(稱為空二叉樹),或者由乙個根結點和兩棵互不相交的、分別稱為根結點的左子樹和右子樹的二叉樹組成。

2.特點:⑴ 每個結點最多有兩棵子樹;

⑵ 二叉樹是有序的,其次序不能任意顛倒。

3.斜樹

1 .所有結點都只有左子樹的二叉樹稱為左斜樹;

2 .所有結點都只有右子樹的二叉樹稱為右斜樹;

3.左斜樹和右斜樹統稱為斜樹。

4.斜樹特點:

(1) 在斜樹中,每一層只有乙個結點;

(2)斜樹的結點個數與其深度相同。

5.滿二叉樹

在一棵二叉樹中,如果所有分支結點都存在左子樹和右子樹,並且所有葉子都在同一層上。

6.特點:

(1)葉子只能出現在最下一層;

(2)只有度為0和度為2的結點。

(3)滿二叉樹在同樣深度的二叉樹中結點個數最多

(4)滿二叉樹在同樣深度的二叉樹中葉子結點個數最多

7.完全二叉樹

對一棵具有n個結點的二叉樹按層序編號,如果編號為i(1≤i≤n)的結點與同樣深度的滿二叉樹中編號為i的結點在二叉樹中的位置完全相同。

8.特點:

(1)葉子結點只能出現在最下兩層,且最下層的葉子結點都集中在二叉樹的左部;

(2) 完全二叉樹中如果有度為1的結點,只可能有乙個,且該結點只有左孩子。

(3)深度為k的完全二叉樹在k-1層上一定是滿二叉樹。

9.基本性質:

(1) 二叉樹的第i層上最多有2i-1個結點(i≥1)。

(2)一棵深度為k的二叉樹中,最多有2k-1個結點,最少有k個結點。

(3) 在一棵二叉樹中,如果葉子結點數為n0,度為2的結點數為n2,則有: n0=n2+1。

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

(5) 對一棵具有n個結點的完全二叉樹中從1開始按層序編號,則對於任意的序號為i(1≤i≤n)的結點(簡稱為結點i),有:

(1)如果i>1,

則結點i的雙親結點的序號為 i/2;如果i=1,

則結點i是根結點,無雙親結點。

(2)如果2i≤n,

則結點i的左孩子的序號為2i;

如果2i>n,則結點i無左孩子。

(3)如果2i+1≤n,

則結點i的右孩子的序號為2i+1;如果2i+1>n,則結點 i無右孩子。

10.對一棵具有n個結點的完全二叉樹中從1開始按層序編號,則

結點i的雙親結點為 i/2;

結點i的左孩子為2i;

結點i的右孩子為2i+1。

11.遍歷: 二叉樹的遍歷是指從根結點出發,按照某種次序訪問二叉樹中的所有結點,使得每個結點被訪問一次且僅被訪問一次。

12.前序(根)遍歷

若二叉樹為空,則空操作返回;否則:

①訪問根結點;

②前序遍歷根結點的左子樹;

③前序遍歷根結點的右子樹。

13.中序(根)遍歷

若二叉樹為空,則空操作返回;否則:

①中序遍歷根結點的左子樹;

②訪問根結點;

③中序遍歷根結點的右子樹。

14.後序(根)遍歷

若二叉樹為空,則空操作返回;否則:

①後序遍歷根結點的左子樹;

②後序遍歷根結點的右子樹。

③訪問根結點;

具體操作見例題

15.層序遍歷

二叉樹的層次遍歷是指從二叉樹的第一層(即根結點)開始,從上至下逐層遍歷,在同一層中,則按從左到右的順序對結點逐個訪問。

16.儲存:二叉樹的順序儲存結構就是用一維陣列儲存二叉樹中的結點,並且結點的儲存位置(下標)應能體現結點之間的邏輯關係——父子關係。

17.完全二叉樹和滿二叉樹中結點的序號可以唯一地反映出結點之間的邏輯關係 。

二叉樹 滿二叉樹和完全二叉樹

二叉樹是一種很重要的非線性資料結構,它是樹結構的一種重要的型別 它不是樹結構的特殊情況 其特徵是每個節點最多有兩個子樹。二叉樹的特點 二叉樹每個結點最多有 2個子結點,樹則無此限制 二叉樹中 結點的子樹 分成左子樹和右子樹,即使某結點只有一棵子樹,也要指明該子樹是左子樹,還是右子樹,就是說 二叉樹是...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

二叉樹和完全二叉樹

二叉樹規律 假設根節點的高度為0 二叉樹是每個節點至多只有兩個節點的樹 深度為i所在的層至多有 2 i個節點 高度為k的二叉樹至多有2 k 1 1個節點 n0表示度為0的節點,n2表示度為2的節點,存在n0 n2 1 對所有樹有 節點個數 邊數 1 完全二叉樹規律 節點數為n的完全二叉樹,其高度為 ...