樹的基礎知識總結

2022-09-16 14:51:12 字數 2072 閱讀 5367

一、樹的定義

1.樹(tree)是n(n>=0)個結點的有限集。n= 0時稱為空樹,在任何一棵非空樹中,有且僅有乙個根結點,當n>1時,其餘結點可分為m個互不相交的有限集,其中每乙個集合本身又是一棵樹,並稱為根的子樹。

2、結點的分類

結點擁有的子樹個數稱為結點的度。度為0的結點稱為葉結點或終端結點。度不為0的結點稱為分支結點或非終端結點。樹的度為樹內各結點度的最大值。

3、結點關係

結點的子樹的根稱為該結點的孩子,該結點稱為孩子結點的雙親。同乙個雙親的結點稱為兄弟

結點的祖先是從根到該結點所經分支上的所有結點。以某結點為跟的子樹的任何乙個結點都被稱為該結點的子孫。

4、樹的其他概念

結點的層次從根結點開始,根為第一層,根的孩子為第二層。其雙親在同一層次的結點互為堂兄弟。樹中結點的最大層次稱為樹的深度或高度。

如果將樹中的結點看做是從左至右是有次序的,不能互換的,則稱該樹為有序樹,否則為無序樹。

二、樹的儲存結構

樹的儲存結構分為順序儲存於鏈式儲存兩種結構;

1、雙親表示法:

將一組連續空間儲存樹的結點,每個結點包含乙個data資料域和乙個指標域指向雙親在陣列中的下表;

1

#define max_size 50

2 typedef int

elemtype;

3 typedef struct ptnode //

結點結構

4ptnode;

89 typedef struct ptree //

樹結構10

ptree;

由於根結點沒有雙親,所以講=將根結點的位置域設定為-1.

2、孩子表示法:

每個結點指標域的個數等於該結點的度。把每個結點的孩子結點排序起來,以單鏈表作為儲存結構,則n個結點有n個孩子鍊錶,如果是葉子結點側次單鏈表為空,然後n個頭指標又組成乙個線性表,採用順序儲存結構,存放進乙個一維陣列中。

data

degree

child1

child2

......

childn

1

#define max_size 50

2 typedef int

elemtype;

3 typedef struct ctnode //

孩子結點結構

4*childptr;

89 typedef struct

//表頭結構

10ctbox;

1415 typedef struct

//樹結構

3、孩子兄弟表示法:

任意一棵樹,他的結點的第乙個孩子如果存在就是唯一的,他的右兄弟如果存在也是唯一的。因此,可設定兩個指標,分別指向該結點的第乙個孩子和次結點的右兄弟。

1 typedef int

elemtype;

2 typedef struct ctnode //孩子兄弟

結點結構

樹基礎知識

陣列儲存方式的分析 優點 通過下標方式訪問元素,速度快。對於有序陣列,還可使用二分查詢提高檢索速度。缺點 如果要檢索具體某個值,或者插入值 按一定順序 會整體移動,效率較低 示意圖 畫出操作示意圖 2.鏈式儲存方式的分析 優點 在一定程度上對陣列儲存方式有優化 比如 插入乙個數值節點,只需要將插入節...

樹的基礎知識

樹 樹定義專業定義 1 有且只有乙個稱為根的節點 2 有若干個互不相交的子樹,這些子樹本身也是一棵樹 通俗定義 1 樹是由節點和邊組成 2 每個節點只有乙個父節點但可以有多個子節點 3 但有乙個節點例外,該節點沒有根節點,此節點稱為根節點 專業術語 節點父節點子節點 子孫堂兄弟 深度 從根節點到最底...

樹的基礎知識

二叉樹的儲存 連續儲存 完全二叉樹 優點 查詢某個節點的父節點和子節點 也包括沒有資料的節點 缺點 耗用記憶體空間過大 鏈式儲存一般樹的儲存 雙親表示法 求父節點方便 孩子表示法 求子節點方便 雙親孩子表示法 求父節點子節點都方便 二叉樹表示法 把乙個普通樹轉換成二叉樹來儲存具體的轉換方法 設法保證...