資料結構 樹和二叉樹的基本概念

2021-10-17 14:43:34 字數 3343 閱讀 7437

樹是n個結點的有限集合,n = 0 時,稱為空樹。在任意空樹中應滿足:

有且僅有乙個特定的稱為根的結點

當 n > 1時,其餘結點可分為 m 個互不相交的有限集合,其中每個集合本身又是一棵樹,並且成為根節點的子樹。

樹的定義是遞迴的,也是一種遞迴的資料結構。有兩個特點:

樹的根節點沒有前驅結點,除根節點外的所有結點有且只有乙個前驅結點

樹中所有結點可以有零的或多個後繼結點

樹適合表示具有層次結構的資料。數中的某個結點最多隻和上一層的乙個結點有直接關係,根結點沒有直接上層結點,所有在n個結點的書中有 n - 1 條邊。

這裡要注意的主要是:

1)**祖先結點 **對應子孫結點雙親結點對應孩子結點; 具有相同雙親的結點稱為兄弟結點

2)樹中乙個結點的子結點個數稱為結點的度;樹中結點的最大度數稱為樹的度

3)度大於0 的稱為 分支結點;度為 0 的結點稱為 葉子結點;

4)結點的深度、高度和層次

結點的層次:從根結點開始定義的,根結點第一層,一直往下推

結點的深度:從根結點開始自頂向下逐層相加

結點的高度:從葉結點開始自底向上逐層相加

樹的高度: 樹中結點的最大層數

5)有序樹,無序樹

有序樹:樹中結點的子樹從左到右是有次序的,不能交換

6)路徑和路徑長度

樹中兩個結點之間的路徑是由這兩個結點之間所經過的結點序列構成的,而路徑長度是路徑上所經過的邊的個數。兄弟結點之間不存在路徑。

7)森林: 森林是由m棵互不相交的集合。

1、樹中的結點數等於所有結點的度數加1

2、度為 m 的樹中第 i 層 上至多有 mi-1 結點

3、高度為 h 的 m 叉樹 至多有(mh - 1)/ ( m - 1 )個結點

4、具有 n 個 結點的m叉樹的最小高度為[logm(n(m-1) + 1)]

二叉樹的特點就是每個節點至多只有兩顆子樹,並且二叉樹的子樹有左右之分,其次序不能任意顛倒。

五種基本形態:

二叉樹與度為2的有序樹的區別:

1)度為2的樹至少有三個結點,而二叉樹可以為空

2)度為2的有序樹的孩子結點左右次序是相對的,但是二叉樹的結點次序是確定的。

1、滿二叉樹:一棵樹高度為h,且含有2h - 1 個結點的二叉樹稱為 滿二叉樹。就是說滿二叉樹中的所有結點(除葉子結點)都含有兩個子結點,也就是度為2。若對滿二叉樹從根結點編號,自上而下,自左向右,那麼對於編號為 i 的結點,若有雙親,則其雙親為 i / 2 (向下取整),若有左孩子,則左孩子為 2i , 若有右孩子,則右孩子為 2i + 1。

2、完全二叉樹:設乙個高度為h,有n個結點的二叉樹,當且僅當每個結點都與高度為h的滿二叉樹中編號為1~n的結點一一對應時,稱為完全二叉樹。

完全二叉樹的特點:

1、若 i <= n/2(向下取整),則結點i為分支結點,否則為葉子結點。

2、葉子結點只可能在層次最大的兩層上出現。對於最大層次中的葉子結點,都一次排列在該層最左邊的位置上。

3、若有度為1的結點,則只可能只有乙個,且該結點只有左孩子而無右孩子(重要特徵)。

4、按層編號後,一旦出現某結點(編號為i)為葉子結點或只有左孩子,則編號大於i的結點均為葉子結點。

5、若n為奇數,則每個分支結點都有左右孩子;若為偶數,則編號最大的分支結點只有左孩子,沒有右孩子。

3、二叉排序樹:二叉樹或者是空二叉樹,左子樹上面的關鍵字都小於根節點的關鍵字;右子樹上面的關鍵字都大於根節點的關鍵字。左子樹和右子樹又各是一棵二叉排序樹。

平衡二叉樹:樹上的任一結點的左子樹和右子樹的深度之差不超過 1。

1)非空二叉樹上的葉子結點數等於度為2的結點數加 1,即 n0 = n2 + 1。

2)非空二叉樹第k層上至多有 2k-1個結點(k >= 1)

3)高度為 h 的二叉樹 至多有 2h - 1 個結點

4)結點 i 所在層次 為 log2i(向下取整) + 1

5)具有n個結點的完全二叉樹的高度為 log2n(向下取整) + 1 或 log2(n+1) (向上取整)。

1、順序儲存結構

二叉樹的順序儲存結構是指用一組位址連續的儲存但願此意自上而下,自左至右儲存完全二叉樹上的結點元素,即將完全二叉樹上編號為i的結點元素儲存在某個陣列下標為 i - 1 的分量中,然後通過一些方法確定結點在邏輯上的父子和兄弟關係。

完全二叉樹和滿二叉樹採用順序儲存比較合適,但是對於一般的二叉樹,為了陣列下標能夠反映二叉樹中結點之間的邏輯關係,只能新增並不存在的空結點,讓每個結點與完全二叉樹上的結點相對照,再儲存到一對陣列的相應分量上中。然而,在最壞情況下,乙個高度為h 且只有 h個結點的單支樹卻需要佔據近2h - 1 個儲存單元,稱為樹的退化。

鏈式儲存結構

由於順序儲存空間利用率低,因此二叉樹一般採用鏈式儲存結構。鏈式儲存結構是指用乙個鍊錶來儲存一棵二叉樹,二叉樹中的每個結點用鍊錶的乙個結點來儲存。二叉鍊錶至少含有 3 個域:資料域data,左指標域lchild,右指標域rchild。

二叉樹的鏈式儲存結構:

typedef

struct bitnodebitnode,

*bittree;

如果喜歡的話,不妨關注一波,謝謝啦。

樹和二叉樹的基本概念

一 樹 1 樹型結構是一類非線性結構 2 樹是n n 0 個結點的有限集 3 樹有且僅有乙個根 root 結點,其餘互不相交的集合稱為根的子樹 4 有向樹有確定的根,且樹根和子樹之間為有向關係 我們一般討論有向樹 5 有序樹和無序樹的區別是子樹之間是否有次序關係 我們一般討論的是無序樹 6 樹的結點...

樹和二叉樹的基本概念

由乙個或多個 n 0 結點組成的有限集合t,有且僅有乙個結點稱為根 root 當n 1時,其餘的結點分為m m 0 個互不相交的有限集合t 1,t 2,t m。每個集合本身又是一顆樹,被稱為這個根的子樹。注1 過去許多書籍中都定義樹為n 1,曾經有 空樹不是樹 的說法,但現在樹的定義已修改。注2 樹...

樹 二叉樹的基本概念

樹基本概念 非線性結構,乙個直接前驅,但可能有多個直接後繼 1 n 樹的定義具有遞迴性,即樹中還有樹 根 葉子 森林 有序樹 無序樹 雙親 孩子 兄弟 堂兄弟 祖先 子孫 結點 結點的度 結點的層次 終端結點 分支結點 樹的度 所有結點度中的最大值 max 樹的深度指所有結點中最大的層數 max 或...