資料結構複習 樹

2021-09-22 22:43:55 字數 1094 閱讀 2141

形式化定義:

對於樹:t=,d是包含n個結點的有限集合,當n=0時為空樹,否則關係r滿足以下條件:

遞迴定義:

樹是由n個結點組成的有限集合,其中:

插入或刪除

遍歷二叉樹是有限的節點的集合:

同樹完全二叉樹

完全二叉樹的性質

森林、樹轉化為二叉樹

在所有相鄰兄弟節點(森林中每棵樹的根節點可看成是兄弟節點)之間加一水平連線

對每個非葉節點k,除了其最左邊的孩子節點外,刪去k與其他孩子節點的連線

二叉樹還原為森林、樹

對於二叉樹的某乙個節點k,鏈結k與k的左孩子的所有右孩子節點,刪去k的左孩子與右孩子節點之間的連線

若根節點有右孩子節點,將其分成兩個不同的子樹。

為了簡便,我們不用下標為0的元素

若為完全二叉樹,則將節點按層序編號

若為非完全二叉樹,將其補全後(可以利用特殊符號填補空缺)再按層序標號

節點的型別定義:

typedef elemtype int

;typedef

struct node

btnode;

在n個節點的二叉鏈中,空指標的個數=n+1

層次遍歷

不能唯一的確定二叉樹

可以唯一確定二叉樹的原因為:

可以根據先序/後序確定根節點,從而在中序中找出根節點以及左子樹和右子樹,往下遞迴即構造出二叉樹

很是懵逼

哈夫曼樹的構造過程(若有n個節點):

構造n棵只有乙個葉節點的二叉樹,得到二叉樹集合t

在t中選取根節點權值最小的兩棵二叉樹作為左、右子樹構造一棵新的二叉樹,根節點的權值為其左、右子樹根節點的權值之和

在集合t中刪除左、右子樹,並將新構造的二叉樹加入到集合中

重複2,3直到t中只剩下一棵二叉樹,此即哈夫曼樹

二叉樹中節點的計算方法

二叉樹的構造:

由乙個固定的先序序列(含有n個不同的節點),構造的二叉樹個數為:c2n

nn+1

\frac^}

n+1c2n

n​​例題:

資料結構複習

1 二叉遍歷 先序遍歷 先遍歷根結點,遍歷左子樹,遍歷右子樹 中序遍歷 先遍歷左子樹,遍歷根結點,遍歷右子樹 後序遍歷 先遍歷左子樹,遍歷右子樹,遍歷根結點 例項 遍歷a b c d e f 如 a e f b c d 先序遍歷 a b cd ef 中序遍歷 a b c d e f 後序遍歷 abc...

資料結構複習

個人理解 1 我認為關鍵是如何合理地將資料放到樹形結構裡 放的方式就是中序排序,即遍歷一遍順序與之相同 2 二叉搜尋樹類似於二分,可以與折半搜尋相比較,雖然思想相似,但是他們的時間效能有時不相同 例如 如果防止不當,42放到了左半枝,這樣就會導致如果輸入31開始比對就會產生位置確認不準確的問題 把一...

複習 資料結構

因為要準備複試,想把專業課順一下,在此簡單記錄。主要按照本科課件複習。資料結構的概念 邏輯結構 邏輯結構可以分為線性結構和非線性結構 儲存結構 儲存結構包括順序 鏈結 索引和雜湊四種方法。鏈結儲存 通過在結點的儲存結構中附加指標欄位來儲存結點間的邏輯關係。資料結點由資料字段 存放結點本身資料 和指標...