樹的基本概念和遍歷規則

2021-07-03 23:16:48 字數 2237 閱讀 4282

樹的遞迴定義

樹是n(n>0)個結點的有限集,這個集合滿足以下條件:

⑴有且僅有乙個結點沒有前驅(父親結點),該結點稱為樹的根;

⑵除根外,其餘的每個結點都有且僅有乙個前驅;

⑶除根外,每乙個結點都通過唯一的路徑連到根上(否則有環)。這條路徑由根開始,而未端就在該結點上,且除根以外,路徑上的每乙個結點都是前乙個結點的後繼(兒子結點);

由上述定義可知,樹結構沒有封閉的迴路。 

節點的分類

結點一般分成三類

⑴根結點:沒有父親的結點。在樹中有且僅有乙個根結點。如節點r

⑵分支結點:除根結點外,有孩子的結點稱為分支結點。如a,b,c,x,t,d,i

⑶葉結點:沒有孩子的結點稱為樹葉。如w,h,e,f,s,m,o,n,j,u

根結點到每乙個分支結點或葉結點的路徑是唯一的。

從根r到結點i的唯一路徑為rcti。

樹的度

⑴結點的度:乙個結點的子樹數目稱為該結點的度。如結點i的度為3,節點t的度為2,節點b的度為1。顯然,所有樹葉的度為0。

⑵樹的度:所有結點中最大的度稱為該樹的度(寬度)。             下列樹的度為3。如果採用陣列儲存子節點位址的話,則應根據樹的度定義陣列大小

樹的深度

樹是分層次的。結點所在的層次是從根算起的。根結點在第一層,根的兒子在第二層,其餘各層依次類推。即某個節點在第k層,則該節點的後件均在第k+1層。

在樹中,父結點在同一層的所有結點構成兄弟關係。

樹中最大的層次稱為樹的深度,亦稱高度。圖中樹的深度為5。

森林所謂森林,是指若干棵互不相交的樹的集合。如圖去掉根結點,其原來的三棵子樹ta,tb,tc的集合就為森林,這三棵子樹的具體形態如下:

有序樹和無序樹

按照樹中同層結點是否保持有序性,可將樹分為有序樹和無序樹。

(1)如果樹中同層結點從左而右排列,其次序不容互換,這樣的樹稱為有序樹;

(2)如果同層結點的次序任意,這樣的樹稱為無序樹。

樹的表示方法

⑴自然界的樹形表示法:

用結點和邊表示樹,例如上圖採用的就是自然界的樹形表示法。樹形表示法一般用於分析問題。

優點:直觀,形象;缺點:儲存困難。

⑵括號表示法:

先將根結點放入一對圓括號中,然後把它的子樹按由左而右的順序放入括號中,而對子樹也採用同樣方法處理:同層子樹與它的根結點用圓括號括起來,同層子樹之間用逗號隔開,最後用閉括號括起來。例如圖可寫成如下形式

(a(b(e(k,l),f),c(g),d(h(m),i,j))) 

優點:易於儲存;缺點:不直觀

樹的遍歷規則

所謂樹的遍歷,是指按照一定的規律不重複地訪問(或取出節點中的資訊,或對節點做其他的處理)樹中的每乙個節點,其遍歷過程實質上是將樹這種非線性結構按一定規律轉化為線性結構。

先根次序遍歷

後根次序遍歷

先根次序遍歷樹

先根次序遍歷的遍歷規則為:若樹為空,則退出;否則先根訪問樹的根點,然後先根遍歷根的每棵子樹。例如,對右圖所示樹進行先根次序遍歷,形成的次序為:

rawxdhebfcstimonju

演算法為:

program preorder(v:integer);

後根次序遍歷樹

後根次序遍歷的遍歷規則為:若樹為空,則退出;否則後根訪問每棵子樹,然後訪問根節點。例如,對右圖所示樹進行後根次序遍歷,形成的次序為:

whdexafbsmonijtucr

演算法為:

樹 定義和基本概念

一 樹 tree 是n n 0 個結點的有限集。n 0時稱為空樹。在任意一棵非空樹中 1 有且僅有乙個特定的稱為根 root 的結點。2 當n 1時,其餘結點可分為m m 0 個互不相交的有限集t1,t2,tm,其中每乙個集合本身又是一棵樹,並且稱為根的子樹 subtree 如圖1所示 樹的定義之中...

樹的基本概念

樹的遞迴定義如下 單個結點是一棵樹,樹根就是該結點本身。設t1,t2,tk是樹,它們的根結點分別為n1,n2,nk。用乙個新結點n作為n1,n2,nk的父親,則得到一棵新樹,結點n就是新樹的根。我們稱n1,n2,nk為一組兄弟結點,它們都是結點n的子結點。我們還稱t1,t2,tk為結點n的子樹。空集...

樹的基本概念

邏輯非線性結構 資料和資料之間是1 m 若某個節點有後繼,則後繼節點可以是多個 若某個節點有前驅,則前驅節點只能是乙個 可以把節點分成前驅節點和後繼節點 節點的度 若a節點有m個子節點,則節點a的度是m 樹的度 樹中節點最大的度 度為n,高度為h的樹中,最多有多少個節點?1 n n 2 n 3 n ...