資料結構 樹

2021-06-27 12:27:07 字數 2567 閱讀 7071

樹的概念

1.家族樹

在現實生活中,有入如下血統關係的家族可用樹形圖表示:

張源有三個孩子張明、張亮和張麗;

張明有兩個孩子張林和張維;

張亮有三個孩子張平、張華和張群;

張平有兩個孩子張晶和張磊。

以上表示很像一棵倒畫的樹。其中"樹根"是張源,樹的"分支點"是張明、張亮和張平,該家族的其餘成員均是"樹葉",而樹枝(即圖中的線段)則描述了家族成員之間的關係。顯然,以張源為根的樹是乙個大家庭。它可以分成張明、張亮和張麗為根的三個小家庭;每個小家庭又都是乙個樹形結構。

2.樹的定義

樹的遞迴定義:

樹(tree)是n(n≥0)個結點的有限集t,t為空時稱為空樹,否則它滿足如下兩個條件:

(1)有且僅有乙個特定的稱為根(root)的結點;

(2)其餘的結點可分為m(m≥0)個互不相交的子集tl,t

2,…,t

m,其中每個子集本身又是一棵樹,並稱其為根的

子樹(subree)。

注意:樹的遞迴定義刻畫了樹的固有特性:一棵非空樹是由若干棵子樹構成的,而子樹又可由若干棵更小的子樹構成。

4.樹結構的基本術語

(1) 結點的度(degree) 

樹中的乙個結點擁有的子樹數稱為該結點的度(degree)。

一棵樹的度是指該樹中結點的最大度數。

度為零的結點稱為葉子(leaf)或終端結點

度不為零的結點稱分支結點非終端結點

除根結點之外的分支結點統稱為內部結點

根結點又稱為開始結點

(2) 孩子(child)和雙親(parents)

樹中某個結點的子樹之根稱為該結點的孩子(child)或兒子,相應地,該結點稱為孩子的雙親(parents)或父親。

同乙個雙親的孩子稱為兄弟(sibling)。

(3)祖先(ancestor)和子孫(descendant)

①路徑(path)

若樹中存在乙個結點序列k1,k2,…,ki,使得ki是ki+1的雙親(1≤il到kj的一條路徑(path)或道路

路徑的長度指路徑所經過的邊(即連線兩個結點的線段)的數目,等於j-1。

注意:若乙個結點序列是路徑,則在樹的樹形圖表示中,該結點序列"自上而下"地通過路徑上的每條邊。

從樹的根結點到樹中其餘結點均存在一條惟一的路徑。

②祖先(ancestor)和子孫(descendant)

若樹中結點k到ks存在一條路徑,則稱k是ks的祖先(ancestor),ks是k的子孫(descendant)。

乙個結點的祖先是從根結點到該結點路徑上所經過的所有結點,而乙個結點的子孫則是以該結點為根的子樹中的所有結點。

約定:結點k的祖先和子孫不包含結點k本身。

(4)結點的層數(level)和樹的高度(height)

結點的層數(level)從根起算:

根的層數為1

其餘結點的層數等於其雙親結點的層數加1。

雙親在同一層的結點互為堂兄弟

樹中結點的最大層數稱為樹的高度(height)或深度(depth)。

注意,很多文獻中將樹根的層數定義為0。

(5)有序樹(orderedtree)和無序樹(unoderedtree)

若將樹中每個結點的各子樹看成是從左到右有次序的(即不能互換),則稱該樹為有序樹(orderedtree);否則稱為無序樹(unoderedtree)。

注意:若不特別指明,一般討論的樹都是有序樹。

(6)森林(forest)

森林(forest)是m(m≥0)棵互不相交的樹的集合。

樹和森林的概念相近。刪去一棵樹的根,就得到乙個森林;反之,加上乙個結點作樹根,森林就變為一棵樹。

5.樹形結構的邏輯特徵

樹形結構的邏輯特徵可用樹中結點之間的父子關係來描述:

(1) 樹中任一結點都可以有零個或多個直接後繼(即孩子)結點,但至多只能有乙個直接前趨(即雙親)結點。

(2) 樹中只有根結點無前趨,它是開始結點;葉結點無後繼,它們是終端結點。

(3) 祖先與子孫的關係是對父子關係的延拓,它定義了樹中結點之間的縱向次序。

(4) 有序樹中,同一組兄弟結點從左到右有長幼之分。

對這一關係加以延拓,規定若k1和k2是兄弟,且k1在k2的左邊,則kl的任一子孫都在k2的任一子孫的左邊,那麼就定義了樹中結點之間的橫向次序。

資料結構 樹

1 定義 樹是一種非線性結構,是一種一對多的資料結構。分析樹的結構,我們用遞迴的方法,根結點下面又可以看做是子樹。2 樹的儲存結構 我們一般用孩子兄弟法儲存。也就是把乙個結點的左邊第乙個孩子放在此結點的左邊孩子,把此結點的右兄弟放在此結點的右邊孩子。這樣就產生了二叉樹。二叉樹和樹可以相互對應。3 二...

資料結構 樹

二叉樹性質回顧 滿二叉樹 完全二叉樹等 給定一棵二叉樹,要求分層遍歷該二叉樹,即從上到下按層次訪問該樹,每一層單獨輸出一行,每一層要求訪問的順序為從左到右。我們在遍歷的過程中將該層節點的孩子節點壓入乙個佇列,這樣就可以實現從上到下一層一層地遍歷該二叉樹。層序遍歷 並分層列印 如果不用分層的話只用佇列...

資料結構 樹

1.樹結構 資料結構中的樹是是對自然界中樹的形象的模仿,如圖1所示 圖1 樹結構的抽象 自然界中的樹和資料結構中的樹都是由乙個根引出,樹是一種分層系統中的非線性結構。2.樹的術語 圖2 樹的示意圖 1 結點 如圖2所示,a i這些圓圈就是結點,它是樹的基本構成單位。結點中的內容是資料項和指向其他結點...