树 - 定义和基本概念
一、樹(Tree)是n(n>=0)個(gè)結(jié)點(diǎn)的有限集。n=0時(shí)稱為空樹。在任意一棵非空樹中:(1)有且僅有一個(gè)特定的稱為根(root)的結(jié)點(diǎn)。
(2)當(dāng)n>1時(shí),其余結(jié)點(diǎn)可分為m(m>0)個(gè)互不相交的有限集T1,T2,....,Tm, 其中每一個(gè)集合本身又是一棵樹,并且稱為根的子樹(SubTree),如圖1所示:
圖1
樹的定義之中還用到了樹的概念,即遞歸定義。如圖2中的子樹T1和T2就是根結(jié)點(diǎn)A的子樹。當(dāng)然D,G,H,I 組成的的樹又是B結(jié)點(diǎn)的子樹,E,J 組成的樹是C結(jié)點(diǎn)的子樹。
圖2
對(duì)于樹的定義還需要注意兩點(diǎn):
1.n>0時(shí)根結(jié)點(diǎn)是唯一的,不可能存在多個(gè)根結(jié)點(diǎn)。
2.m>0時(shí),子樹的個(gè)數(shù)沒有限制,但它們一定是互不相交的。如圖3中的兩個(gè)結(jié)構(gòu)就不符合樹的定義,因?yàn)樗鼈兌加邢嘟坏淖訕洹?/span>
圖3
二.樹的結(jié)點(diǎn)包含一個(gè)數(shù)據(jù)元素及若干指向其子樹的分支。結(jié)點(diǎn)擁有的子樹稱為結(jié)點(diǎn)的度(Degree)。度為0的結(jié)點(diǎn)稱為葉結(jié)點(diǎn)(Leaf)或終端結(jié)點(diǎn);度不為0的結(jié)點(diǎn)稱為非終端結(jié)點(diǎn)或分支結(jié)點(diǎn),除根結(jié)點(diǎn)之外,分支結(jié)點(diǎn)也稱為內(nèi)部結(jié)點(diǎn)。樹的度是樹內(nèi)各結(jié)點(diǎn)的度的最大值。如圖4,因?yàn)檫@棵樹結(jié)點(diǎn)的度的最大值是結(jié)點(diǎn)D的度3,所以樹的度也為3。
圖4
結(jié)點(diǎn)的子樹的根稱為該結(jié)點(diǎn)的孩子(Child),相應(yīng)地,該結(jié)點(diǎn)稱為孩子的雙親(Parent),同一個(gè)雙親的孩子之間互稱為兄弟(Sibling)。結(jié)點(diǎn)的祖先是從根到該結(jié)點(diǎn)所經(jīng)分支上的所有結(jié)點(diǎn)。所以對(duì)于H來說,D,B,A都是它的祖先。反之,以某結(jié)點(diǎn)為根的子樹中的任一結(jié)點(diǎn)都稱為該結(jié)點(diǎn)的子孫。B的子孫有D,G,H,I,如圖5所示。
圖5
三、結(jié)點(diǎn)的層次(Level)從根開始定義起,根為第一層,根的孩子為第二層。其雙親在同一層的結(jié)點(diǎn)互為堂兄弟。顯然在圖6中D,E,F都是堂兄弟,而
G,H,I 與 J也是堂兄弟。樹中結(jié)點(diǎn)的 最大層次稱為樹的深度(Depth)或高度,當(dāng)前樹的深度為4(注:也有一些書是定義為branches的個(gè)數(shù),此時(shí)認(rèn)為
深度為3)。
圖6
若將樹中每個(gè)結(jié)點(diǎn)的各子樹看成是從左到右有次序的(即不能互換),則稱該樹為有序樹(OrderedTree);否則稱為無序樹(UnorderedTree)。注意:若不特別指明,一般討論的樹都是有序樹。
森林(Forest)是m(m≥0)棵互不相交的樹的集合。對(duì)樹中每個(gè)結(jié)點(diǎn)而言,其子樹的集合即為森林。對(duì)于圖1的樹而言,圖2的兩棵子樹其實(shí)就可以理解為森林。樹和森林的概念相近。刪去一棵樹的根,就得到一個(gè)森林;反之,加上一個(gè)結(jié)點(diǎn)作樹根,森林就變?yōu)橐?span style="font-family:arial, '宋體', sans-serif;font-size:14px;line-height:24px;text-indent:30px;">棵樹。
對(duì)比線性表與樹的結(jié)構(gòu),它們有很大不同,如圖7所示。
圖7
參考:《大話數(shù)據(jù)結(jié)構(gòu)》
總結(jié)
以上是生活随笔為你收集整理的树 - 定义和基本概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Javaamp;amp;(面试题)初始化
- 下一篇: 区别用户使用的终端设备代码 转 http