演算法 什麼是樹以及樹相關概念

2021-10-25 01:11:37 字數 1923 閱讀 9607

樹的度是樹內各節點的度的最大值

如果樹中結點的各子樹從左向右是有序的,子樹間不能互換位置,則稱該樹為有序樹,否則為無序樹。

取一塊連續的記憶體空間,在層次每個節點的同時,各自都附加乙個記錄其父節點位置的變數

#

define

tree_size

100//巨集定義樹中結點的最大數量

#define

telemtype

int//巨集定義樹結構中資料型別

typedef

struct

ptnode

ptnode;

typedef

struct

ptree;

例如,使用雙親表示法儲存圖 1(a)中的樹結構時,陣列儲存結果為(b):

當演算法中需要在樹結構中頻繁地查詢某結點的父結點時,使用雙親表示法最合適。當頻繁地訪問結點的孩子結點時,雙親表示法就很麻煩,採用孩子表示法就很簡單

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

#

define

telemtype

int#

define

tree_size

100//孩子表示法

typedef

struct

ctnode

*childptr;

typedef

struct

ctbox;

typedef

struct

ctree;

使用孩子表示法儲存的樹結構,正好和雙親表示法相反,適用於查詢某結點的孩子結點,不適用於查詢其父結點。

將雙親表示法和孩子表示法結合起來

使用鏈式儲存結構儲存普通樹。鍊錶中每個結點由 3 部分組成:

其中孩子指標域,表示指向當前結點的第乙個孩子結點,兄弟結點表示指向當前結點的下乙個兄弟結點。

#

define

elemtype

inttypedef

struct

csnode

csnode,

*cstree;

通過孩子兄弟表示法,普通樹轉化為了二叉樹,所以孩子兄弟表示法又被稱為「二叉樹表示法」或者「二叉鍊錶表示法」。

樹的雙親表示法、孩子表示法和孩子兄弟表示法

一棵樹為樹,兩棵樹及以上則稱為森林

什麼是B樹?

b樹,是乙個m叉平衡查詢樹。如果m為2即為二叉查詢平衡樹,一般m都是大於2的。其特性如下 資料項儲存在樹的葉子節點。所有樹的葉子節點都在相同的深度上,並由l 2 小數字進1 和l之間個資料項。非葉節點儲存直到m 1個關鍵字以指示搜尋的方向 關鍵字i代表子樹i 1中的最小的關鍵字。樹的根或者一片樹葉節...

什麼是B 樹?

b 樹是為磁碟或其他直接訪問輔助裝置而設計的一種m叉平衡查詢樹,其特性如下 每個節點m個關鍵字和m棵子樹,每個關鍵字對應乙個子樹。除根節點外,其餘所有節點的關鍵字數在m 2 小數字進1 和m之間 根節點的關鍵字數在 1,m 之間。所有的資料項,都是按照大小順序存放在同一層的葉子節點中,各葉子節點間用...

20200316 什麼是樹

這裡的樹指得是資料結構中的樹。樹是一種抽象的資料結構。是一類資料的集合,這些資料組成乙個樹的形狀。例如遊戲中的技能樹,每個技能都有很多子技能,但每個子技能只有乙個父技能。根節點 沒有父節點的節點稱為根節點。子節點父節點 兄弟節點 堂兄弟節點 節點的祖先 節點的子孫 節點的層次 節點的深度 樹的深度 ...