資料結構 樹之二叉樹(1)

2021-08-05 19:19:46 字數 1581 閱讀 7871

二叉樹中,每個結點的度不大於2,並且,二叉樹的子樹有左右之分,其次序不能任意顛倒。注意:二叉樹只限制了度,而沒有對結點的元素之間的順序進行限定,空二叉樹指沒有結點的二叉樹(在計算機裡,存在乙個樹結構型別的指標,但是該指標指向null),而不是有根節點但是根結點沒有結點元素。

我們通常會對二叉樹的結點按照從上到下、從左到右的順序(層序)從1開始編號,這樣就有了第i個結點的說法,但是需要注意的是:第i個結點並不意味著這個結點的元素是i,只是這個結點的序列是i,而這個結點的元素可以是任意資料。由於對二叉樹度的限制,二叉樹有了許多可以被量化**的性質,接下來將會介紹這些性質。

(1)斜二叉樹(skewed binary tree)

所有結點均只有左子樹或右子樹的二叉樹叫做斜二叉樹,斜二叉樹的高度太高,不利於查詢等操作,這個時候和線性表差不多。

(2)完美二叉樹(perfect binary tree)/滿二叉樹(full binary tree)

完美二叉樹和滿二叉樹一樣,只是譯法不同,通常使用滿二叉樹的叫法,對於一顆滿二叉樹而言,每一層的結點都填滿了該層,也就是說第k層的結點數為2k-1,滿二叉樹如下圖所示,少乙個結點,多乙個結點都不是滿二叉樹了。

滿二叉樹平時用的也不是很多,用得更多的是接下來將要介紹的完全二叉樹(complete binary tree)。

(3)完全二叉樹(complete binary tree)

完全二叉樹可以看作是滿二叉樹的退化版本,比如說,上圖的滿二叉樹去掉g結點,就是一顆完全二叉樹,如果只去掉f結點而不同時去掉g結點,這個時候就不是完全二叉樹了。

關於完全二叉樹的定義是這樣的:有n個結點,這些結點按照從上到下、從左到右的順序填充二叉樹,最後得到的就是一顆完全二叉樹。

完全二叉樹更符合實際的情況,所以使用的很多。

證明:

設n1為該樹中度為1的結點數,則樹中邊的總數en為

en = n0 + n1 + n2 - 1

考慮不同度對邊的貢獻有

en = 0*n0 + 1*n1 + 2*n2

所以有下式存在

0*n0 + 1*n1 + 2*n2 = n0 + n1 + n2 - 1

得到 n0 = n2+1

以上的3條性質對所有二叉樹都成立,所以我在性質裡將二叉樹加粗了,接下來的性質就只針對於特定的二叉樹成立,注意不要記混淆了。

證明:

根據性質2,深度為k的完全二叉樹的結點總數n不超過2k-1,所以有

2k-1-1 < n ≤ 2k-1或2k-1 < n ≤ 2k

所以有

k-1 < log2n ≤ k

k為整數,因此

k = [log2n]+1

資料結構樹之二叉樹

二叉樹的定義 是一顆空樹或者具有以下性質 1.結點最多只有兩個孩子,且有左右之分。不能交換左右孩子 2.結點點的左子樹和右子樹也是二叉樹。例圖 二叉樹的基本形態 二叉樹中的術語 1 結點度 節點所擁有的字數的個數成為該節點的度,在二叉樹中度的取值只能是0,1,2.2 葉節點 度為0的節點成為葉結點或...

資料結構之二叉樹

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

資料結構之二叉樹

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