資料結構 樹

2022-04-27 13:41:50 字數 1604 閱讀 4412

1.順序儲存結構

該方法是把二叉樹的所有結點按照一定的線性次序儲存到一片連續的儲存單元中。結點在這個序列中的相互位置還能反映出結點之間的邏輯關係。

2、鏈式儲存結構

遍歷二叉樹,就是遵從某種次序,訪問二叉樹中的所有結點,使得每個結點僅被訪問一次。

1.中序遍歷的遞迴演算法定義:

若二叉樹非空,則依次執行如下操作:

2.先序遍歷的遞迴演算法定義:   若二叉樹非空,則依次執行如下操作:

3.後序遍歷得遞迴演算法定義:   若二叉樹非空,則依次執行如下操作:

1.定義

n個結點的二叉鍊錶中含有n+1個空指標域。利用二叉鍊錶中的空指標域,存放指向結點在某種遍歷次序下的前趨和後繼結點的指標(這種附加的指標稱為"線索")。

這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹(threaded binarytree)。根據線索性質的不同,線索二叉樹可分為前序線索二叉樹、中序線索二叉樹和後序線索二叉樹三種。

2.線索二叉樹的表示

1.哈夫曼樹

在權為wl,w2,…,wn的n個葉子所構成的所有二叉樹中,帶權路徑長度最小(即代價最小)的二叉樹稱為最優二叉樹或哈夫曼樹。

2.編碼和解碼

3.字符集編碼的儲存結構及其演算法描述

1

///name:tree

2///

author:ja

3///

date:2015-3-1045

67///二叉樹的儲存結構

8///

二叉樹的順序儲存表示

9#define msx_tree_size 100 //

二叉樹的最大結點數

10 typedef telemtype sqbitree[msx_tree_size] //

0號單元儲存根結點

11sqbitree bt;

1213

///二叉樹的鍊錶儲存表示

14 typedef struct

bitnodebitnode,*bitree;

1819

20///

中序遍歷演算法實現

21void

inorder(bitree t)

2228 }//

inorder

2930

///哈弗曼樹和哈弗曼編碼的儲存表示

31 typedef struct

codenode;

3536

typedef codenode huffmancode[n];

37void

charsethuffmanencoding(huffmantree t,huffmancode h)

38

52 strcpy(h[i].bits,&cd[start]); //

複製編碼位串

53 }//

endfor

54 }//

charsethuffmanencoding

view code

資料結構 樹

樹的概念 1.家族樹 在現實生活中,有入如下血統關係的家族可用樹形圖表示 張源有三個孩子張明 張亮和張麗 張明有兩個孩子張林和張維 張亮有三個孩子張平 張華和張群 張平有兩個孩子張晶和張磊。以上表示很像一棵倒畫的樹。其中 樹根 是張源,樹的 分支點 是張明 張亮和張平,該家族的其餘成員均是 樹葉 而...

資料結構 樹

1 定義 樹是一種非線性結構,是一種一對多的資料結構。分析樹的結構,我們用遞迴的方法,根結點下面又可以看做是子樹。2 樹的儲存結構 我們一般用孩子兄弟法儲存。也就是把乙個結點的左邊第乙個孩子放在此結點的左邊孩子,把此結點的右兄弟放在此結點的右邊孩子。這樣就產生了二叉樹。二叉樹和樹可以相互對應。3 二...

資料結構 樹

二叉樹性質回顧 滿二叉樹 完全二叉樹等 給定一棵二叉樹,要求分層遍歷該二叉樹,即從上到下按層次訪問該樹,每一層單獨輸出一行,每一層要求訪問的順序為從左到右。我們在遍歷的過程中將該層節點的孩子節點壓入乙個佇列,這樣就可以實現從上到下一層一層地遍歷該二叉樹。層序遍歷 並分層列印 如果不用分層的話只用佇列...