資料結構 之 二叉樹的定義理解

2021-10-07 07:31:22 字數 1885 閱讀 8368

二叉樹(binary tree)是n(n>=0)個結點的有限集合,該集合或者為空集(稱為空二叉樹),或者由乙個根結點的兩棵互不相交的,分別稱為根結點的左子樹和右子樹的二叉樹組成。

圖1-1就是乙個二叉樹。

圖1-1

每個結點最多有兩個子樹,所以二叉樹中不存在度大於2的結點。注意不是只有兩棵子樹,而是最多有。沒有子樹或者有一顆子樹都是可以的。

左子樹和右子樹是有順序的,次序不能任意顛倒。打個比方,人的雙手,雙腳,顯然左手和右手是不一樣的。

即使樹中某結點只有一棵子樹,也要區分它是左子樹還是右子樹。圖1-2中,樹1和樹2是同一棵樹,但他們卻是不同的二叉樹。

圖1-2

二叉樹具有五種基本形態:

空二叉樹。

只有乙個根結點。

根結點只有左子樹。

根結點只有右子樹。

根結點既有左子樹又有右子樹。

這五種形態還是比較好理解的,如果是有三個結點的樹,有幾種形態?如果是有三個結點的二叉樹,有幾種形態?

若只考慮形態,三個結點的樹只有兩種情況。那就是圖1-3中只有兩層的樹1和有三層的後四種的任意一種,但是對於二叉樹,由於要區分左右,所以就要演變成五種形態,樹2,樹3,樹4,樹5分別代表不同的二叉樹。

圖1-3

顧名思義,斜樹一定要是斜的,但是往哪斜是有講究的。所有的結點都只有左子樹的二叉樹叫做左斜樹。所有的結點都是只有右子樹的二叉樹叫右斜樹。這兩種統稱為斜樹。圖1-3中的樹2就是左斜樹,樹5就是右斜樹。斜樹有乙個明顯的特點,就是每一層都只有乙個結點,結點的個數與二叉樹的深度相同。

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

圖1-4就是一顆滿二叉樹。

圖1-4

單是每個結點都存在左右子樹,不能算是滿二叉樹,還必須要所有 的葉子結點都在同一層上,這就做到了整棵樹的平衡,因此,滿二叉樹的特點:

(1)葉子只能出現在最下一層。出現在其它層就不可能達到平衡。

(2)非葉子結點的度一定是2。

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

對一顆具有n個結點的二叉樹按層次編號,如果編號為i(1=

圖1-5

這是一顆有些難理解的二叉樹。

首先要從字面上區分,「完全」和「滿」的差異,滿二叉樹一定是一顆完全二叉樹,但是完全二叉樹不一定是滿二叉樹。

完全二叉樹的所有結點與同樣深度的滿二叉樹,它們按層序編號相同的結點,是一 一對應的,怎麼理解按層序編號,圖1-6中數1,因為5結點沒有左子樹,卻有右子樹,那就使得按層序編號的第10個編號空擋了。圖2,,由於3結點沒有子樹,所以使得6,7編號的位置空擋了,樹3又是因為沒有5編號沒有子樹造成10和11編號位置空擋。

圖1-5儘管他不是滿二叉樹,但是編號是連續的,所以他是完全二叉樹。

(1)葉子結點只能出現在最下兩層。

(2)最下層的葉子一定集中在最左部連續位置。

(3)倒數二層,若有葉子結點,一定都在右部連續位置。

(4)如果結點度為1,則該結點只有左孩子,即不存在只有右子樹的情況

(5)同樣結點數的二叉樹,完全二叉樹的深度最小。

資料結構之二叉樹

在二叉樹中每個節點最多只能有兩個子節點。即左子節點和有子節點。在二叉樹中最重要的操作應當是遍歷。即按照某一順序訪問二叉樹中的每乙個節點。一般有如下幾種遍歷方法 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...