《数据结构》天勤和王道 第五章 树
《數(shù)據(jù)結(jié)構(gòu)》天勤和王道 第五章 樹
- 天勤部分
- 1. 樹的基礎(chǔ)知識(shí)
- 1.1 結(jié)點(diǎn)的度
- 1.2 樹的度
- 1.3 葉子結(jié)點(diǎn)
- 1.4 雙親結(jié)點(diǎn)、孩子結(jié)點(diǎn)、祖先結(jié)點(diǎn)和子孫結(jié)點(diǎn)
- 1.5 兄弟結(jié)點(diǎn)和堂兄弟結(jié)點(diǎn)
- 1.6 高度和深度
- 1.7 存儲(chǔ)結(jié)構(gòu)
- 2. 二叉樹的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)
- 2.1 性質(zhì)
- 2.2 葉子結(jié)點(diǎn)數(shù)=雙分支結(jié)點(diǎn)數(shù)+1的靈活運(yùn)用
- 2.3 m叉樹的性質(zhì)
- 王道部分
- 1. 樹的定義和基本術(shù)語
- 2. 樹的常考性質(zhì)
- 3. 二叉樹的定義和基本術(shù)語
- 3.1 滿二叉樹和完全二叉樹
- 3.2 二叉排序樹
- 3.3 平衡二叉樹
- 4. 二叉樹的性質(zhì)
- 4.1 二叉樹的常考性質(zhì)
- 4.2 完全二叉樹的常考性質(zhì)
- 5. 二叉樹的存儲(chǔ)結(jié)構(gòu)
- 5.1 順序存儲(chǔ)
- 5.2 鏈?zhǔn)酱鎯?chǔ)
- 6. 二叉樹的先中后序遍歷
- 6.1 先序遍歷的代碼
- 6.2 中序遍歷的代碼
- 6.3 后序遍歷的代碼
- 6.4 遍歷算術(shù)表達(dá)式樹
- 7. 二叉樹的層序遍歷
- 8. 由遍歷序列構(gòu)造二叉樹
- 8.1 不同二叉樹的遍歷序列
- 8.2 前序+中序遍歷序列
- 8.3 后序+中序遍歷序列
- 8.4 層序+中序遍歷
- 9. 線索二叉樹
- 9.1 線索二叉樹的概念
- 9.1.1 中序線索二叉樹
- 線索二叉樹的存儲(chǔ)結(jié)構(gòu)
- 9.1.2 先序線索二叉樹
- 9.1.3 后序線索二叉樹
- 9.2 二叉樹的線索化(代碼實(shí)現(xiàn))
- 9.2.1 中序線索化
- 9.2.2 先序線索化
- 9.2.3 后序線索化
- 9.3 線索二叉樹找前驅(qū)/后繼
- 9.3.1 中序線索二叉樹找中序后繼
- 9.3.2 中序線索二叉樹找中序前驅(qū)
- 9.3.3 先序線索二叉樹找先序后繼
- 9.3.4 先序線索二叉樹找先序前驅(qū)
- 9.3.5 后序線索二叉樹找后序前驅(qū)
- 9.3.6 后序線索二叉樹找后序后繼
- 10. 樹的存儲(chǔ)結(jié)構(gòu)
- 10.1 雙親表示法(順序存儲(chǔ))
- 10.2 孩子表示法(順序+鏈?zhǔn)酱鎯?chǔ))
- 10.3 孩子兄弟表示法(鏈?zhǔn)酱鎯?chǔ))
- 10.4 森林和二叉樹的轉(zhuǎn)換
- 11 樹、森林的遍歷
- 11.1 樹的先根遍歷
- 11.2 樹的后根遍歷
- 11.3 樹的層次遍歷
- 11.4 森林的先序遍歷
- 11.5 森林的中序遍歷
- 12. 哈夫曼樹
- 12.1 帶權(quán)路徑
- 12.2 哈夫曼樹的定義
- 12.3 哈夫曼樹的構(gòu)造
- 12.4 哈夫曼編碼
- 13. 并查集(新增考點(diǎn))
- 13.1 查和并的實(shí)現(xiàn)
- 13.2 并查集的存儲(chǔ)結(jié)構(gòu)
- 13.3 基本操作
- 13.4 代碼實(shí)現(xiàn)
- 13.5 Union操作的優(yōu)化
- 13.6 Find操作的優(yōu)化(壓縮路徑)
天勤部分
1. 樹的基礎(chǔ)知識(shí)
樹是一種遞歸定義的數(shù)據(jù)結(jié)構(gòu)。遞歸特性:當(dāng)前每一層都跟上一層有類似的結(jié)構(gòu),每一個(gè)子結(jié)構(gòu)跟其父結(jié)構(gòu)都類似。
1.1 結(jié)點(diǎn)的度
1.2 樹的度
所有結(jié)點(diǎn)中最大的分支數(shù)就是樹的度。
1.3 葉子結(jié)點(diǎn)
度為0的結(jié)點(diǎn)就是葉子結(jié)點(diǎn)。
1.4 雙親結(jié)點(diǎn)、孩子結(jié)點(diǎn)、祖先結(jié)點(diǎn)和子孫結(jié)點(diǎn)
1.5 兄弟結(jié)點(diǎn)和堂兄弟結(jié)點(diǎn)
1.6 高度和深度
1.7 存儲(chǔ)結(jié)構(gòu)
這部分直接看下面王道的“10. 樹的存儲(chǔ)結(jié)構(gòu)”。
2. 二叉樹的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)
2.1 性質(zhì)
2.2 葉子結(jié)點(diǎn)數(shù)=雙分支結(jié)點(diǎn)數(shù)+1的靈活運(yùn)用
當(dāng)求一棵樹中的空指針個(gè)數(shù)等時(shí),我們可以先在每個(gè)結(jié)點(diǎn)上填充上空指針,使得每個(gè)結(jié)點(diǎn)的度都為2,然后就可以運(yùn)用公式了。
2.3 m叉樹的性質(zhì)
王道部分
1. 樹的定義和基本術(shù)語
2. 樹的常考性質(zhì)
3. 二叉樹的定義和基本術(shù)語
3.1 滿二叉樹和完全二叉樹
滿二叉樹是一種特殊的完全二叉樹。
3.2 二叉排序樹
3.3 平衡二叉樹
4. 二叉樹的性質(zhì)
4.1 二叉樹的常考性質(zhì)
結(jié)點(diǎn)樹=總度數(shù)+1;這的“1”表示的是根結(jié)點(diǎn)。
4.2 完全二叉樹的常考性質(zhì)
這里的 h-1<log2 (n+1)<=h,表示的是log2 (n+1)在 h-1 和 h 之間相差不到一的小數(shù),由于是<=h,所以向上取整。
5. 二叉樹的存儲(chǔ)結(jié)構(gòu)
5.1 順序存儲(chǔ)
5.2 鏈?zhǔn)酱鎯?chǔ)
6. 二叉樹的先中后序遍歷
6.1 先序遍歷的代碼
6.2 中序遍歷的代碼
6.3 后序遍歷的代碼
6.4 遍歷算術(shù)表達(dá)式樹
7. 二叉樹的層序遍歷
8. 由遍歷序列構(gòu)造二叉樹
8.1 不同二叉樹的遍歷序列
8.2 前序+中序遍歷序列
舉個(gè)例子:
8.3 后序+中序遍歷序列
舉個(gè)例子:
8.4 層序+中序遍歷
舉個(gè)例子:
再舉個(gè)例子:
必須跟中序序列組合才能確定唯一的二叉樹。
9. 線索二叉樹
9.1 線索二叉樹的概念
遍歷二叉樹是以一定的規(guī)則講二叉樹中的結(jié)點(diǎn)排列成一個(gè)線性序列,從而得到幾種遍歷序列,使得該序列中的每個(gè)結(jié)點(diǎn)(第一個(gè)和最后一個(gè)結(jié)點(diǎn)除外)都有一個(gè)直接前驅(qū)和直接后繼。
這種是沒有線索的時(shí)候,找遍歷序列中的前驅(qū)和后繼。
通過中序遍歷,先訪問D結(jié)點(diǎn)(visit(D)),然后繼續(xù)執(zhí)行下去。
9.1.1 中序線索二叉樹
線索二叉樹的存儲(chǔ)結(jié)構(gòu)
9.1.2 先序線索二叉樹
9.1.3 后序線索二叉樹
9.2 二叉樹的線索化(代碼實(shí)現(xiàn))
9.2.1 中序線索化
9.2.2 先序線索化
9.2.3 后序線索化
9.3 線索二叉樹找前驅(qū)/后繼
9.3.1 中序線索二叉樹找中序后繼
9.3.2 中序線索二叉樹找中序前驅(qū)
9.3.3 先序線索二叉樹找先序后繼
9.3.4 先序線索二叉樹找先序前驅(qū)
9.3.5 后序線索二叉樹找后序前驅(qū)
9.3.6 后序線索二叉樹找后序后繼
10. 樹的存儲(chǔ)結(jié)構(gòu)
10.1 雙親表示法(順序存儲(chǔ))
10.2 孩子表示法(順序+鏈?zhǔn)酱鎯?chǔ))
10.3 孩子兄弟表示法(鏈?zhǔn)酱鎯?chǔ))
10.4 森林和二叉樹的轉(zhuǎn)換
11 樹、森林的遍歷
11.1 樹的先根遍歷
11.2 樹的后根遍歷
11.3 樹的層次遍歷
11.4 森林的先序遍歷
11.5 森林的中序遍歷
如果考試要是考到關(guān)于遍歷森林的代碼的話,我們可以先轉(zhuǎn)換成上述這種二叉樹(即森林用二叉樹來存儲(chǔ)),然后利用我們熟悉的二叉樹代碼繼續(xù)解決。
12. 哈夫曼樹
12.1 帶權(quán)路徑
12.2 哈夫曼樹的定義
只要是最優(yōu)二叉樹就是哈夫曼樹。
12.3 哈夫曼樹的構(gòu)造
12.4 哈夫曼編碼
13. 并查集(新增考點(diǎn))
并查集的邏輯結(jié)構(gòu)是一個(gè)集合。
這個(gè)時(shí)候我們可以將集合之間的關(guān)系類似地看成是森林,而每個(gè)集合中的元素也可以組成一棵樹。
13.1 查和并的實(shí)現(xiàn)
13.2 并查集的存儲(chǔ)結(jié)構(gòu)
可以用雙親表示法來存儲(chǔ)并查集。
13.3 基本操作
13.4 代碼實(shí)現(xiàn)
13.5 Union操作的優(yōu)化
優(yōu)化思路:在每次Union操作構(gòu)建樹的時(shí)候,盡量不要讓樹“長高”。
①用根結(jié)點(diǎn)的絕對(duì)值表示樹的結(jié)點(diǎn)總數(shù)。
②Union操作,讓小樹合并到大樹。
13.6 Find操作的優(yōu)化(壓縮路徑)
每次Union時(shí),都需要從指定元素出發(fā)找到該元素的根結(jié)點(diǎn),也就是需要乘上Find函數(shù)的時(shí)間復(fù)雜度。
總結(jié)
以上是生活随笔為你收集整理的《数据结构》天勤和王道 第五章 树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 遥感图像的下载
- 下一篇: 求1+2阶乘+3阶乘+ 省略 +20阶乘