樹 定義和基本概念

2021-09-07 16:59:51 字數 1694 閱讀 8891

一、樹(tree)是n(n>=0)個結點的有限集。n=0時稱為空樹。在任意一棵非空樹中:(1)有且僅有乙個特定的稱為根(root)的結點。

(2)當n>1時,其餘結點可分為m(m>0)個互不相交的有限集t1,t2,....,tm, 其中每乙個集合本身又是一棵樹,並且稱為根的子樹(subtree),如圖1所示:

樹的定義之中還用到了樹的概念,即遞迴定義。如圖2中的子樹t1和t2就是根結點a的子樹。當然d,g,h,i 組成的的樹又是b結點的子樹,e,j 組成的樹是c結點的子樹。

對於樹的定義還需要注意兩點:

1.n>0時根結點是唯一的,不可能存在多個根結點。

2.m>0時,子樹的個數沒有限制,但它們一定是互不相交的。如圖3中的兩個結構就不符合樹的定義,因為它們都有相交的子樹。

二.樹的結點包含乙個資料元素及若干指向其子樹的分支。結點擁有的子樹稱為結點的度(degree)。度為0的結點稱為葉結點(leaf)或終端結點;度不為0的結點稱為非終端結點或分支結點,除根結點之外,分支結點也稱為內部結點。樹的度是樹內各結點的度的最大值。如圖4,因為這棵樹結點的度的最大值是結點d的度3,所以樹的度也為3。

結點的子樹的根稱為該結點的孩子(child),相應地,該結點稱為孩子的雙親(parent),同乙個雙親的孩子之間互稱為兄弟(sibling)。結點的祖先是從根到該結點所經分支上的所有結點。所以對於h來說,d,b,a都是它的祖先。反之,以某結點為根的子樹中的任一結點都稱為該結點的子孫。b的子孫有d,g,h,i,如圖5所示。

三、結點的層次(level)從根開始定義起,根為第一層,根的孩子為第二層。其雙親在同一層的結點互為堂兄弟。顯然在圖6中d,e,f都是堂兄弟,而

g,h,i 與 j也是堂兄弟。樹中結點的 最大層次稱為樹的深度(depth)或高度,當前樹的深度為4(注:也有一些書是定義為branches的個數,此時認為

深度為3)。

若將樹中每個結點的各子樹看成是從左到右有次序的(即不能互換),則稱該樹為有序樹(orderedtree);否則稱為無序樹(unorderedtree)。注意:若不特別指明,一般討論的樹都是有序樹。

森林(forest)是m(m≥0)棵互不相交的樹的集合。對樹中每個結點而言,其子樹的集合即為森林。對於圖1的樹而言,圖2的兩棵子樹其實就可以理解為森林。樹和森林的概念相近。刪去一棵樹的根,就得到乙個森林;反之,加上乙個結點作樹根,森林就變為一棵樹。

對比線性表與樹的結構,它們有很大不同,如圖7所示。

參考:《大話資料結構》

網路流基本概念和定義

問題 rightarrow 某種方式建圖的網路流 rightarrow 網路流解與原問題解是否等價。流網路是乙個有向圖 g 其中有兩個特殊點 s,t in v 分別為源點和匯點。g 中每一條邊有乙個 ge 0 的權值,稱作邊的容量,邊 u,v 容量可記做 c u,v 源點相當於乙個水源,匯點相當於乙...

樹的基本概念

樹的遞迴定義如下 單個結點是一棵樹,樹根就是該結點本身。設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 ...