樹的基本知識

2022-05-08 13:09:10 字數 2462 閱讀 3666

一、定義:

樹(tree):是n (n>0)個結點的有限集。

當n=0時 (根節點是唯一的),稱為空樹,在任意乙個非空樹當中:有且僅有乙個特定的稱為根節點(root)的結點;當n>1時,其餘結點可以分為m(m>0)個互不相交的有限集t1,t2...,tm,其中每乙個集合本身又是乙個樹,並且稱為根的子樹(subtree)。

二、結點的分類:

度(degree):每個結點都有乙個度,結點擁有的子樹數稱為結點的度(degree),樹的度取決於樹內各結點度的最大值。

葉節點(leaf)/葉子結點/ 終端結點:度為0 的結點。

分支結點/ 非終端結點:度不為0 的結點。

內部結點:除跟結點外的分支結點。

三、結點之間的關係

結點的子樹的根稱為該結點的孩子,(例如a結點的孩子為b,c)

相反的,該結點稱為孩子的雙親結點。(a稱為b,c的雙親結點)

同乙個雙親的孩子之間互稱為兄弟

結點的祖先,從根到該結點所經分支上的所有結點

以某結點為根的子樹中的任一結點都為該結點的子孫

四、樹的層次

結點的層次(level)從根開始,根為第一層,根的孩子為第二層。

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

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

五、有序樹和無序樹

如果將樹中結點的各子樹看成從左到右,是有次序的,不能交換,則稱該樹為有序樹,否則為無序樹。

若兩者表示同一顆樹,就叫無序樹

若兩者表示2顆不同樹,就叫做有序樹

六、森林

森林(forest)是m(m>0)棵互不相交的樹的集合。對樹中的每個結點而言,其子樹的集合即為森林。

七、和線性表的區別

1、線性表:

第乙個資料元素:無前驅

最後乙個資料元素:無後繼

中間元素:乙個前驅乙個後繼

2、樹:

根結點:無雙親,唯一

中間結點:乙個雙親,可以多個孩子

葉結點:無孩子,一棵樹可以有多個葉結點

八、總結樹的抽象資料型別

adt 樹(tree)

data

樹是由乙個根節點和若干棵子樹構成。樹中結點具有相同資料型別及層次關係

operation

inittree(*t):構造空樹t

destroytree(*t):銷毀樹t

createtree(*t,definition):按照definition中給出樹的定義來構造樹

cleartree(*t):若樹存在,則清空樹

treeempty(t):若樹為空,返回true,否則false

treedepth(t):返回樹的深度

root(t):返回t的根節點

value(t,cur_e):cur_e是樹t中的乙個結點,返回此結點的值

assign(t,cur_e,value):給樹t的結點cur_e賦值為value

parent(t,cur_e):若cur_e是樹的非根節點,則返回他的雙親,否則為空

leftchild(t,cur_e):若cur_e是樹的非葉結點,則返回他的最左結點,否則返回空

rightsibling(t,cur_e):若cur_e有右兄弟,則返回他的有兄弟,否則為空

insertchild(*t,*p,i,c):插入乙個樹c到樹t中,插入位置為p所指向的結點的第i個子樹。記得將該結點的度加1

deletechild(*t,*p,i):刪除樹t中p所指向結點的第i棵子樹

endadt

樹 基本知識

自由樹 自由樹是乙個連通,無迴路的無向圖.顯然樹是圖的一種.如果乙個無向圖雖然無迴路,但是可能非聯通,那麼這個圖成為森林.森林可以調整為一顆二叉樹 左兒子,右兄弟 森林是m m 0 棵互不相交的樹的集合。令g v,e 為乙個無向圖.則以下6點是等價的.1 g是自由樹 2 g中任意兩個頂點由唯一一條簡...

樹的基本知識

表示法 1.樹形 2.文氏圖 3.凹入 4.括號 結點的度與樹的度 m次樹 結點子樹的個數 非終端節點,分支結點,葉節點 路徑與路徑長度 ki,ki1,ki2,kj,結點數目減1 分支數目 孩子結點,雙親結點,兄弟結點 結點的層次和樹的高度 根節點為第一層,樹的高度。森林 n n 0 個互不相交的樹...

樹的基本知識

樹 樹是一些節點的集合。這個集合可以是空集 若集合不是空集,則樹由根節點r以及0個或多個子樹組成。邊 兩個節點之間的連線就是邊。樹葉 沒有兒子的節點稱為樹葉。節點的度 節點擁有的子樹數稱為節點的度。度 節點的度的最大值稱為樹的度。兄弟 具有相同父親節點的節點稱為兄弟。路徑 從節點n1到節點nk的路徑...