樹和二叉樹

2021-07-12 08:07:29 字數 3051 閱讀 1135

注:本文內容來自電子工業出版社《軟體設計師考試輔導教程》2023年3月第1版

1.1 樹

1.1.1樹的基本概念

樹是由乙個或多個節點組成的有限集合t,它滿足如下兩個條件:

1)有乙個特定的結點,稱為根節點

2)其餘的節點分成m(m>=0)個互不相交的有限集合。其中每個集合又都是一棵樹,稱t1,t2,…,tm-1為根結點的子樹。

上圖為樹結構示意圖,由上圖可知:

1.一棵樹由子樹構成,子樹又由更小的子樹構成。

2.由條件1)可知,一棵樹至少有乙個結點(根結點)。=》上圖根結點為1

3.乙個結點的子樹數目稱為該結點的度(次數),樹中各結點的度的最大值稱為樹的度(樹的次數)=》結點1的度為3,結點2的度為4,該樹的度數為4

4.度為0的結點稱為葉子結點(樹葉),除葉子結點外的所有節點稱為分支結點,根以外的分支結點稱為內部結點

定義一顆樹的根結點所在的層次為1,其他結點所在的層次等於它的父結點所在的層次+1。樹種各結點的層次的最大值稱為樹的層次。

1.1.2 樹的常用儲存結構

因為樹是非線性的,為了儲存樹,必須要把樹中結點之間的關係反應在儲存結構中

1)標準儲存結構:樹種的結點內容可分為兩部分,結點的資料和指向結點的指標資料。對於n度樹,在其標準儲存結構中指標陣列有n個元素

2)帶逆儲存結構:在標準儲存結構的基礎上增加乙個指向其父結點的指標

1.1.3 樹的遍歷(重點)

前序遍歷:首先訪問根結點,然後從左到右按前序遍歷根結點的各棵子樹

後序遍歷:首先從左到右按後序遍歷根結點的各棵子樹,然後訪問根結點

層次遍歷:首先訪問處於0層上的根節點,然後從左到右依次訪問處於1層上的結點,再從左到右依次訪問處於2層上的結點等,即自上而下,從左到右逐層訪問樹中的各層上的結點。

以此圖為例:

前序遍歷:1,2,5,6,7,8,3,4,9,a,b

後序遍歷:5,6,7,8,2,3,a,b,9,4,1

層次遍歷:1,2,3,4,5,6,7,8,9,a,b

*1.2 二叉樹 binarytree*

1.2.1 二叉樹的基本概念

二叉樹是乙個有限的結點集合,該集合或者為空,或者由乙個根結點及兩棵互不相交的左,右二叉子樹所組成。二叉樹的結點中有兩棵子二叉樹,分別稱為左子樹和右子樹。因為二叉樹可以為空,所以二叉樹中的結點可能沒有子結點,也可能只有乙個左子結點or右子結點,也可能同時有左右兩個子節點。下圖所示為二叉樹的4種不同形態,如果算上空二叉樹,那麼其實一共有五種形態。

二叉樹常採用類似樹的標準儲存結構來儲存,c語言定義如下:

typedef

struct btnodebtnode;

1.2.2 二叉樹的性質

性質1:在二叉樹的第i層上至多有2^(i-1)個結點(i>=1)

性質2:深度為k的二叉樹至多有2^k-1個結點(k>=1)

性質3:對任何一棵二叉樹,如果其葉子結點數為n0,度為2的結點數為n2,則n0=n2+1

一棵深度為k且有2^k-1(k>=1)個結點的二叉樹稱為滿二叉樹。

上圖所示即為一棵滿二叉樹

由上圖可以看到:第三層上最多有2^(3-1)=4個結點,深度為3的它至多有2^3-1=7個結點,現在它的葉子結點數為4,度數為2的結點數為3(1,2,3),所以4=3+1

如果深度為k,有n個結點的二叉樹中各結點能夠與深度為k的順序編號的滿二叉樹從1到n標號的結點對應,則稱這樣的二叉樹為完全二叉樹。

所以下圖中,最左邊的是完全二叉樹,其餘兩棵都是非完全二叉樹。

根據完全二叉樹的定義,在一顆完全二叉樹中,所有的葉子結點都出現在第k層或k-1層(最後兩層)

性質4:具有n(n>0)個結點的完全二叉樹的深度為

性質5:如果對一棵樹有n個結點的完全二叉樹的結點按層序編號(從第一層到第

1.2.3 二叉樹的遍歷

性質6:一棵二叉樹的前序序列和中序序列可以唯一地確認這棵二叉樹

例如:某二叉樹的前序序列為abhfdeckg,中序序列為hbdfaekcg,則構造二叉樹的過程:

前序序列確定a為根結點,中序序列把a左右分開

根據前序序列的定義,確定b是a的左邊子結點,取b,將b的子結點分為h和fd兩個

取出d

至此左子樹完畢,我們殺入右子樹

取e

觀察前序序列並結合中序序列,取出c

取k和g的過程省略

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

二叉樹是一種很重要的非線性資料結構,它是樹結構的一種重要的型別 它不是樹結構的特殊情況 其特徵是每個節點最多有兩個子樹。二叉樹的特點 二叉樹每個結點最多有 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的完全二叉樹,其高度為 ...