樹的儲存結構

2021-10-03 01:32:35 字數 1220 閱讀 1858

樹的資料邏輯結構是一對n的,除了根節點,每個元素只有乙個前驅,但是可以有多個後繼,具有層次關係,像家譜就是乙個樹的例子。

樹是有n個結點的有限集合,當n大於零時,這個樹有且僅有乙個稱為根的結點,從根節點延申出來的元素可以時n個,同時可以再延申。n=0時,該樹就是空樹。

樹的第一層就是根結點,第二層都是稱為第一層的孩子,第一層為第二層的父結點。第三層的都稱為第二層的孩子,以此類推。

結點的分支的個數稱為結點的度

終端結點:沒有分支的結點叫做終端結點,也就是葉子

樹中結點的最大層次稱為樹的深度或樹的高度

有序樹:如果樹中的各子樹的資料從左到右有序,改變任意乙個元素,該樹就改變。這樣的樹稱為有序樹。反之,無序的樹稱為無序樹

森林是m和互不相交的樹的集合。

定義的結點包括兩個領域,乙個資料域存放資料資訊,雙親域用來只是本結點雙親結點再陣列中的位置。

用雙親表示法建立乙個結點:

typedef struct parent

ptnode;

樹結構:

#define size 100

typedef struct

把父結點的所有子節點看作乙個線性表,用單鏈表儲存這幾個孩子,把父結點的指標域指向它的子節點這個線性表。形成鍊錶。有n個結點,就用n個頭指標,每個結點都有它的孩子,如果是葉子,它沒有孩子,為空。每個結點都跟乙個單鏈表,葉子的鍊錶的為空。

孩子結點的結構由資料域,和指標域。

typedef struct ctnode

*childptr;

雙親結點的結構由資料域和孩子鍊錶的頭指標組成。

typedef struct 

ctbox;

樹結構:

typedef struct 

ctree;

用二叉鍊錶作樹的儲存結構,鍊錶中的每個結點分別指向第乙個孩子結點和下乙個兄弟結點。根節點沒有兄弟結點。

typedef struct csnode

csnode,*cstree;

樹的儲存結構

樹的儲存結構 樹的存貯結構有多種表示方法,比較典型的乃是順序結構和鍊錶結構兩類。順序存貯結構即向量,一般將樹結點按自上而下,自左至右的順序一一存放。如前文所介紹的完全二叉樹就可以採用順序存貯結構。1.雙親鍊錶表示法 順序儲存結構常用的有雙親表示法,這種方法在每個陣列元素中存放某個結點資訊和該結點的雙...

樹的儲存結構

1 第一行乙個n,代表這個樹有n個節點,接下來輸入n行,第i行輸入兩個數字,li,ri,代表第i個節點的左兒子右兒子 節點序號從1編號到n 如果沒有左兒子或者右兒子,就用 1代替,輸出它的層序遍歷 include include include using namespace std struct ...

樹的儲存結構

一 樹的儲存結構有三種 1.雙親表示法 2.孩子表示法 3.孩子兄弟表示法 二 雙親表示法 用一組連續空間儲存樹的結點,同時在每乙個結點中增加乙個指示器,用來標記雙親的位置。方便尋找雙親 不放便查詢孩子 孩子表示法 資料區不再是雙親的節點位置 而是此雙親的左右孩子 左右分支均是儲存的本結點的孩子 若...