樹的定義
樹是一種非線性的數(shù)據(jù)結構
樹是由 n (n≥0) 個結點組成的有限集合
?如果 n = 0,稱為空樹 ;
?如果 n > 0,則 :
??有一個特定的稱之為根 (root) 的結點,它只有直接后繼,但沒有直接前驅(qū)
??除根以外的其它結點劃分為 m (m≥0) 個互不相交的有限集合T0, T1, …,Tm-1, 每個集合又是一棵樹, 并且稱之為根的子樹(subTree)
樹家族中的概念
樹的結點包含一個數(shù)據(jù)及若干指向子樹的分支
結點擁有的子樹數(shù)稱為結點的度
?度為0的結點稱為葉結點
?度不為0的結點稱為分支結點
樹的度定義為所有結點中的度的最大值
結點的直接后繼稱為該結點的孩子
?相應的,該結點稱為孩子的雙親
結點的孩子的孩子的…… 稱為該結點的子孫
?相應的,該結點稱為子孫的祖先
同一個雙親的孩子之間互稱兄弟
結點的層次
?根為第1層
?根的孩子為第2層
?……
樹中結點的最大層次稱為樹的深度或高度
如果樹中結點的各子樹從左向右是有次序的,子樹間不能互換位置 ,則稱該樹為有序樹 ,否則為無序樹。
森林是由 n ( n≥0) 棵互不相交的樹組成的集合
樹的一些常用操作
創(chuàng)新互聯(lián)公司專注于資溪網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供資溪營銷型網(wǎng)站建設,資溪網(wǎng)站制作、資溪網(wǎng)頁設計、資溪網(wǎng)站官網(wǎng)定制、微信平臺小程序開發(fā)服務,打造資溪網(wǎng)絡公司原創(chuàng)品牌,更為您提供資溪網(wǎng)站排名全網(wǎng)營銷落地服務。
創(chuàng)建樹
銷毀樹
清空樹
插入結點
刪除結點
獲取結點
獲取根結點
獲取樹的結點數(shù)
獲取樹的高度
獲取樹的度
樹的存儲結構
無法直接用數(shù)組表示樹的邏輯結構
但可以設計結構體數(shù)組對結點間的關系進行表述
利用鏈表組織樹中的各個結點
鏈表中的前后關系不代表結點間的邏輯關系
結點的邏輯關系由 child 數(shù)據(jù)域描述
child 數(shù)據(jù)域保存其他結點的存儲地址
另一種樹結構模型
孩子兄弟表示法模型
每個結點都有一個指向其第一個孩子的指針
每個結點都有一個指向其第一個右兄弟的指針
每個結點包含一個數(shù)據(jù)指針和兩個結點指針
數(shù)據(jù)指針 : 指向保存于樹中的數(shù)據(jù)
孩子結點指針 : 指向第一個孩子
兄弟結點指針 : 指向第一個右兄弟
孩子兄弟表示法的特點
能夠表示任意的樹形結構
每個結點中有且僅有三個指針域
?數(shù)據(jù)指針,孩子結點指針,兄弟結點指針
每個結點的結構簡單
?只有孩子結點指針和兄弟結點指針構成了“樹杈"
二叉樹的定義
二叉樹是由n ( n ≥0) 個結點組成的有限集合, 該集合或者為空, 或者是由一個根結點加上兩棵分別稱為左子樹和 右子樹的 、 互不相交的二叉樹組成。
特殊的二叉樹
滿二叉樹(Full Binary Tree)
如果 二叉樹中所有分支結點的度數(shù)都為2, 且葉子結點都在同一層次上 , 則稱這類二叉樹為滿二叉樹 。
完全二叉樹 (Complete Binary Tree)
如果一棵具有n個結點的高度為k的二叉樹, 它的每一個結點都與高度為k 的滿二叉樹中編號為1—n 的結點一一對應, 則稱這棵二叉樹為完全二叉樹。(從上到下從左到右編號)
完全二叉樹的葉結點僅出現(xiàn)在最下面兩層
?最下層的葉結點一定出現(xiàn)在左邊
?倒數(shù)第二層的葉結點一定出現(xiàn)在右邊
完全二叉樹中度為1的結點只有左孩子
同樣結點數(shù)的二叉樹 , 完全二叉樹的高度最小
通用樹實現(xiàn)源碼