樹與二叉樹的學習筆記

2021-06-29 10:05:08 字數 1682 閱讀 5447

相比於如鍊錶之類的線性資料結構只能表示單一的前驅與後繼,樹結構是乙個更為複雜的資料結構,所能表達的關係也更複雜(如父子,上級和下屬等)。所謂的樹指的是擁有n(n>=0)個結點組成擁有乙個根節點,以及m個互不相交的子集組成的乙個集合,其中每乙個子集有稱為該樹的乙個子樹,我們很容易的看出樹結構是乙個遞迴定義的乙個資料結構。

下面我們來看一下樹結構裡面的一些定義:

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

2:樹的度:所有節點中最大的度就是該樹的度。

3:葉子結點:度為0的節點。

4:分支結點:度不為0的節點。

5:路徑與路徑長度:乙個節點有通向另乙個結點的邊,怎這斜邊稱為路徑。邊的條數稱為路徑長度。

6:樹的深度:樹中所有結點的最大層數。

7:層序編號:對樹進行重上到下,從左到右的依次進行編號。

8:深林:互不相交的樹組成的集合,任何一棵樹去掉一條邊就成為深林。

樹的基本資料型別和鍊錶差不多,知識根據不同的要求適當的修改:如下就是乙個定義了記錄左孩子和右孩子的樹的節點型別:

public class tree
樹的遍歷問題:

1:前序遍歷:先遍歷根節點,在遍歷根的左孩子。直到某根節點沒有左孩子在遍歷其有孩子。

2:中序遍歷:先遍歷根節點的左孩子,直到沒有左孩子在遍歷根的右孩子,直到右孩子遍歷完後再遍歷根節點。

3:層序遍歷:從第一層開始從上到下,每一層中從左到右一次進行遍歷。

二:二叉樹:

作為一種特殊的樹,在現實生活中往往用的比較多,同樣在筆試和面試當中有出現的相對較多。所謂二叉樹是指:每乙個作為根節點的節點只有左孩子或右孩子。因此在二叉樹中不存在度大於2的節點。

幾種特殊的二叉樹:

1:斜樹:每一層只有乙個節點的二叉樹,分為左斜樹和右斜樹。

2:滿二叉樹:葉子結點出只出現在最後一層並且除葉子結點外所有的節點度都為2.

3:完全二叉樹:對結點進行編號,所產生的編號和把該數補全為乙個滿二叉樹所得到的編號完全一樣。

二叉樹的幾個性質:

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

2:在乙個深度為k的二叉樹中,最多有2的k次方減乙個結點,最少有k個結點。

3:二叉樹中葉子節點為n0個,度為2的節點有n2個,那麼滿足n0=n2+1。

二叉樹的遍歷:

1:前序遍歷:如果樹為空則返回。否則先遍歷根節點,在前序遍歷左孩子,前序遍歷右孩子。通過定義我們可以看到這是乙個遞迴的過程。

2:中序遍歷:如果樹為空則返回。否則中序遍歷樹的左孩子,遍歷根節點,中序遍歷樹的右孩子。

3:後序遍歷:如果為空則返回。否則後續遍歷樹的左孩子,後續遍歷樹的右孩子,遍歷根節點。

4:層序遍歷:從上到下,從左到右依次遍歷。

下面來看幾道典型的筆試題:

輸入兩棵二叉樹a和b,判斷樹b是不是a的子結構

分析:首先判斷b是不是空樹,如果b 是空樹的話那麼它是任何數的子樹。

如果a和b 都不是空樹的話,在a 中查詢b 的根結點,找到相等的通過遞迴不斷的進行比較。

總結:遞迴演算法在二叉樹中運用的比較,不管是遍歷還是構造。其實這道題就是乙個查詢不斷比較的過程,如果進一步問是不是子樹的話,也按照這個這個思路分析。總之遞迴演算法在二叉樹中運用的比較多,所以我們遇到類似問題盡量用遞迴去解決。

樹與二叉樹筆記

樹與二叉樹 二叉樹的性質 性質1 二叉樹中的第i i 0 層的結點數最多為2 i 性質2 深度為h h 1 的二叉樹最多有2 h 1個結點 性質3 對於任何一顆二叉樹,若其葉結點的個數為n0,度為2的結點n2,則有n0 n2 1 性質4 二叉樹的儲存結構 順序儲存 適合滿二叉樹或完全二叉樹 鏈式儲存...

學習筆記 樹 二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。本題主要採用遞迴的思想。首先介紹一下根據前序遍歷和中序遍歷來構建二叉樹的思路 前序遍歷的第乙個則是二叉樹的根,找到根在中序遍歷中的位...

樹與二叉樹學習

第一塊 介紹二叉樹的一些基本知識 1.1 二叉樹的基本概念 二叉樹是每個結點最多有兩個子樹的樹結構 1.2 二叉樹的五種基本形態和兩種特殊形態 五種基本形態 兩種特殊形態 1.3 二叉樹的性質 a 在二叉樹的第i層上最多有2 i 1 個結點 i 1 b 高度為k的二叉樹,最多有2 k 1個結點 k ...