資料結構之二叉樹

2021-10-25 14:31:02 字數 1894 閱讀 2213

1.二叉樹的引入

學習了鍊錶結構之後,我們會發現鍊錶中的資料始終是一對一的關係,今天我們來看看更深一層的資料結構–樹型結構,它屬於一對多的關係。下面是樹形結構的示例:

對於一棵樹來說,它有以下這些概念:

節點的度:乙個節點含有的子樹的個數稱為該節點的度,如上圖a的度為3;

樹的度:一棵樹中,最大的節點的度稱為樹的度;

葉子節點:度為0的節點,如上圖e、f、g、h;

雙親節點或父節點:若乙個節點含有子節點,則這個節點稱為其子節點的父節點,如上圖a是b的父節點;

孩子節點或子節點:乙個節點含有的子樹的根結點稱為該節點的子節點,如上圖b是a的子節點;

根節點:一棵樹中,沒有雙親節點的節點,如上圖a;

節點的層次:從根開始定義,根為第一層,根的子節點為第二層,依次類推;

樹的高度或者深度:樹中節點的最大層次,如上圖樹的高度為3。

有很多地方都運用到了樹形結構,比如檔案系統管理

2.二叉樹的特點

我們了解了樹形結構之後,來看一種特殊的樹–二叉樹,二叉樹的特點如下:

(1)每個節點最多有兩棵子樹,即二叉樹節點的度小於等於2

(2)二叉樹的子樹有左右之分,其子樹的次序不能顛倒

3.二叉樹的基本形態

4.兩種特殊的二叉樹

(1)完全二叉樹:完全二叉樹是效率很高的資料結構,對於深度為k,有n個節點的二叉樹,當且僅當其每乙個節點都與深度為k的滿二叉樹中編號從1至n的結點一一對應時稱之為完全二叉樹。通俗點講就是樹中每乙個節點只要它有右子樹就一定存在左子樹,反之不然。

(2)滿二叉樹:每一層的節點都達到最大值的二叉樹,它是一種特殊的完全二叉樹。

5.二叉樹的遍歷

我們都知道二叉樹不再是簡單的線性結構,那麼它的遍歷就比較複雜了,而遍歷方法也不止一種,常見遞迴遍歷方式有三種。

構建一棵二叉樹:

(1)前序遍歷/先序遍歷

先訪問根結點,遞迴遍歷左子樹,遞迴遍歷右子樹

(2)中序遍歷

先遞迴遍歷左子樹,再訪問根結點,遞迴遍歷右子樹

(3)後序遍歷

先遞迴遍歷左子樹,再遞迴遍歷右子樹,最後訪問根節點

遍歷結果如下:

看完遞迴遍歷的方式,我們來看看非遞迴遍歷中的層序遍歷,它就是一層一層從左至右,從上至下。

關於二叉樹就講這麼多,大家看完之後如果想繼續深入了解二叉樹,可以做做相關筆試題。比如求二叉樹的葉子節點個數,二叉樹的高度,二叉樹的平衡與映象等等。

資料結構之二叉樹

在二叉樹中每個節點最多只能有兩個子節點。即左子節點和有子節點。在二叉樹中最重要的操作應當是遍歷。即按照某一順序訪問二叉樹中的每乙個節點。一般有如下幾種遍歷方法 1 前序遍歷,即先訪問根幾點,然後再訪問左子節點,最後訪問右子節點。2 中序遍歷,即先訪問左子節點,然後再訪問根節點,最後訪問右子節點。3 ...

資料結構之二叉樹

定義 滿足以下條件的就是樹 1.有且僅有乙個特定的稱為根root的結點。2.當n 1時,其餘結點可分為m m 0 個互不相交的有限集,其中每個集合本身又是乙個棵樹,並稱為根的子樹。樹是資料結構中一種常見的資料結構,比如我們排序中常見的二叉樹,紅黑樹等。最常見的是樹形表示法和廣義表表示法。樹的結構示意...

資料結構之二叉樹

來看一下樹的結構 class treenode public treenode string value 首先,為了方便後面看到效果,先手動初始化乙個有4個節點的二叉樹 tree tree new tree treenode root new treenode root treenode node1...