樹和二叉樹知識點彙總

2021-10-01 05:16:37 字數 2865 閱讀 8188

1.樹是一種非線性的資料結構,它是由n個有限結點組成有層次關係的集合.

2.樹具有以下特點,可以根據這些特點來判斷乙個資料結構是否是樹

•每個結點具有0個或多個子結點

•每個子結點只有乙個父結點

•沒有前驅的結為根結點

•除了根結點外,每個子結點又可以由m棵不相關的子樹組成

樹形結構是以分支關係定義的資料結構(非線性結構和線性結構,個人理解為有無分支的區別),相比佇列,樹的區別在於它的資料不是以一條線的形式組織

樹分為自由樹各有根樹,自由樹暫且不討論(離散數學裡面有提到,但是和現階段程式設計沒關係)有根樹是由n個節點組成,當n=0時,為空樹,不由為非空樹 每個非空樹有且只有乙個根節點,每個根節點下有一或者多個樹;

ps:注意,樹的定義用到了遞迴的概念,根節點下有樹,而這些樹的根節點,恰恰就是它的下層節點

下面介紹 一些有關樹的術語

1. 結點(node)包含資料項和指向其它節點 的分支

2. 結點的度(degree of node):結點所擁有的子樹個數

3. 樹的度(degree of tree):樹中各結點度的最大值

4. 葉子結點(leaf node)即度為0的結點 又叫終端結點

5. 分支結點(branch node) 除葉結點以外的其它結點,又叫非終端結點

6. 結點的層次(level of node):從根結點到某結點所經路徑上的分支數稱為該結點的層次。根結點的層次為1,其餘結點為其父結點的層次+1

7. 樹的深度(depth):

和樹一樣,二叉樹也是遞迴定義的,其結點有左右子樹之分,邏輯上二叉樹有五種基本形態:

(1)空二叉樹——(a);

(2)只有乙個根結點的二叉樹——(b);

(3)只有左子樹——(c);

(4)只有右子樹——(d);

(5)完全二叉樹——(e)

注意:儘管二叉樹與樹有許多相似之處,但二叉樹不是樹的特殊情形。

樹和二叉樹的2個主要差別:

1. 樹中結點的最大度數沒有限制,而二叉樹結點的最大度數為2;

2. 樹的結點無左、右之分,而二叉樹的結點有左、右之分。 (我覺得這個才是本質區別)

[size=medium]二叉樹的性質[/size]

(1) 在二叉樹中,第i層的結點總數不超過2^(i-1);

(2) 深度為h的二叉樹最多有2^h-1個結點(h>=1),最少有h個結點;

(3) 對於任意一棵二叉樹,如果其葉結點數為n0,而度數為2的結點總數為n2,則n0=n2+1;

引入兩個 概念:

滿二叉樹(full binary tree):

除最後一層無任何子節點外,每一層上的所有結點都有兩個子結點(最後一層上的無子結點的結點為葉子結點)。也可以這樣理解,除葉子結點外的所有結點均有兩個子結點。節點數達到最大值。所有葉子結點必須在同一層上.

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

(5)有n個結點的完全二叉樹各結點如果用順序方式儲存,則結點之間有如下關係:

若i為結點編號則 如果i<>1,則其父結點的編號為i/2;

如果2*i<=n,則其左兒子(即左子樹的根結點)的編號為2*i;若2*i>n,則無左兒子;

如果2*i+1<=n,則其右兒子的結點編號為2*i+1;若2*i+1>n,則無右兒子。

(6)給定n個節點,能構成h(n)種不同的二叉樹。

[size=large]二叉樹的儲存表示[/size]

1.順序儲存結構(陣列)

二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的方法從樹根起,自上層至下層,每層自左至右地給所有結點編號,缺點是有可能對儲存空間造成極大的浪費,在最壞的情況下,乙個深度為k且只有k個結點的右單支樹需要2k-1個結點儲存空間。依據二叉樹的性質,完全二叉樹和滿二叉樹採用順序儲存比較合適,樹中結點的序號可以唯一地反映出結點之間的邏輯關係,這樣既能夠最大可能地節省儲存空間,又可以利用陣列元素的下標值確定結點在二叉樹中的位置。

對於一般的二叉樹,如果仍按從上至下和從左到右的順序將樹中的結點順序儲存在一維陣列中,則陣列元素下標之間的關係不能夠反映二叉樹中結點之間的邏輯關係,只有增添一些並不存在的空結點,使之成為一棵完全二叉樹的形式,然後再用一維陣列順序儲存。如圖1給出了一棵一般二叉樹改造後的完全二叉樹形態和其順序儲存狀態示意圖。顯然,這種儲存對於需增加許多空結點才能將一棵二叉樹改造成為一棵完全二叉樹的儲存時,會造成空間的大量浪費,不宜用順序儲存結構。最壞的情況是右單支樹,如圖2所示,一棵深度為k的右單支樹,只有k個結點,卻需分配2k-1個儲存單元。

2.鏈式儲存結構

二叉樹的鏈式儲存結構是指,用鍊錶來表示一棵二叉樹,即用鏈來指示元素的邏輯關係。

通常的方法是鍊錶中每個結點由三個域組成,資料域和左右指標域,左右指標分別用來給出該結點左孩子和右孩子所在的鏈結點的儲存位址。其結點結構為:

lchild|data|rchild

其中,data域存放某結點的資料資訊;lchild與rchild分別存放指向左孩子和右孩子的指標,當左孩子或右孩子不存在時,相應指標域值為空(用符號∧或null表示)。利用這樣的結點結構表示的二叉樹的鏈式儲存結構被稱為二叉鍊錶,這種結構只能從上至下查詢

為了方便訪問某結點的雙親,還可以給鍊錶結點增加乙個雙親欄位parent,用來指向其雙親結點。每個結點由四個域組成,其結點結構為:

lchild|data|rchild|parent

這種儲存結構既便於查詢孩子結點,又便於查詢雙親結點;但是,相對於二叉鍊錶儲存結構而言,它增加了空間開銷。利用這樣的結點結構表示的二叉樹的鏈式儲存結構被稱為三叉鍊錶。

順序儲存(陣列)和鍊錶的優缺點:(可模擬陣列和鍊錶)

陣列:方便查詢,節省儲存空間(針對完全二叉樹而言),查詢方便,但是不方便改動

鍊錶:改動方便,但是浪費儲存空間,不方便查詢遍歷。

二叉樹知識點

樹是一種常用的非線性資料結構,用於描述分支 分層關係。一 基本概念 1 什麼是二叉樹?二叉樹是也是一種樹,乙個節點最多有兩個子樹結構。2 什麼是節點的度?節點的子樹個數,叫做節點的度,所以二叉樹節點的度最大為2。3 什麼是葉子節點?沒有子樹的節點叫葉子節點,葉子節點的度為0。4 什麼是節點的深度?節...

樹,二叉樹知識點總結

性質1 樹中的結點數等於所有結點的度數之和加1 性質2 度為m的樹中第i層上最多有m i 1個結點 i 1 性質3 高度h的m次樹最多有 m h 1 m 1 個結點 性質4 具有n個結點的m次樹的最小高度為logm n m 1 1 向上取整 1 樹的遍歷 先根遍歷 若樹不空,則先訪問根節點,然後依次...

樹和二叉樹的知識點考前總結

先放一張自己做的思維導圖,當時思路不是太清晰,只能看出來當時學的大概是啥。1 邏輯結構的一種。2 樹中包含的基本概念。結點 度 層次 雙親 孩子 兄弟 1 為什麼要研究二叉樹。二叉樹的結構最簡單,規律性最強 所有樹都能轉為唯一對應的二叉樹,不失一般性。二叉樹不是樹。2 特殊二叉樹 滿二叉樹與完全二叉...