日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《数据结构》天勤和王道 第五章 树

發布時間:2023/12/31 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《数据结构》天勤和王道 第五章 树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

《數據結構》天勤和王道 第五章 樹

  • 天勤部分
    • 1. 樹的基礎知識
      • 1.1 結點的度
      • 1.2 樹的度
      • 1.3 葉子結點
      • 1.4 雙親結點、孩子結點、祖先結點和子孫結點
      • 1.5 兄弟結點和堂兄弟結點
      • 1.6 高度和深度
      • 1.7 存儲結構
    • 2. 二叉樹的邏輯結構和存儲結構
      • 2.1 性質
      • 2.2 葉子結點數=雙分支結點數+1的靈活運用
      • 2.3 m叉樹的性質
  • 王道部分
    • 1. 樹的定義和基本術語
    • 2. 樹的常考性質
    • 3. 二叉樹的定義和基本術語
      • 3.1 滿二叉樹和完全二叉樹
      • 3.2 二叉排序樹
      • 3.3 平衡二叉樹
    • 4. 二叉樹的性質
      • 4.1 二叉樹的常考性質
      • 4.2 完全二叉樹的常考性質
    • 5. 二叉樹的存儲結構
      • 5.1 順序存儲
      • 5.2 鏈式存儲
    • 6. 二叉樹的先中后序遍歷
      • 6.1 先序遍歷的代碼
      • 6.2 中序遍歷的代碼
      • 6.3 后序遍歷的代碼
      • 6.4 遍歷算術表達式樹
    • 7. 二叉樹的層序遍歷
    • 8. 由遍歷序列構造二叉樹
      • 8.1 不同二叉樹的遍歷序列
      • 8.2 前序+中序遍歷序列
      • 8.3 后序+中序遍歷序列
      • 8.4 層序+中序遍歷
    • 9. 線索二叉樹
      • 9.1 線索二叉樹的概念
        • 9.1.1 中序線索二叉樹
          • 線索二叉樹的存儲結構
        • 9.1.2 先序線索二叉樹
        • 9.1.3 后序線索二叉樹
      • 9.2 二叉樹的線索化(代碼實現)
        • 9.2.1 中序線索化
        • 9.2.2 先序線索化
        • 9.2.3 后序線索化
      • 9.3 線索二叉樹找前驅/后繼
        • 9.3.1 中序線索二叉樹找中序后繼
        • 9.3.2 中序線索二叉樹找中序前驅
        • 9.3.3 先序線索二叉樹找先序后繼
        • 9.3.4 先序線索二叉樹找先序前驅
        • 9.3.5 后序線索二叉樹找后序前驅
        • 9.3.6 后序線索二叉樹找后序后繼
    • 10. 樹的存儲結構
      • 10.1 雙親表示法(順序存儲)
      • 10.2 孩子表示法(順序+鏈式存儲)
      • 10.3 孩子兄弟表示法(鏈式存儲)
      • 10.4 森林和二叉樹的轉換
    • 11 樹、森林的遍歷
      • 11.1 樹的先根遍歷
      • 11.2 樹的后根遍歷
      • 11.3 樹的層次遍歷
      • 11.4 森林的先序遍歷
      • 11.5 森林的中序遍歷
    • 12. 哈夫曼樹
      • 12.1 帶權路徑
      • 12.2 哈夫曼樹的定義
      • 12.3 哈夫曼樹的構造
      • 12.4 哈夫曼編碼
    • 13. 并查集(新增考點)
      • 13.1 查和并的實現
      • 13.2 并查集的存儲結構
      • 13.3 基本操作
      • 13.4 代碼實現
      • 13.5 Union操作的優化
      • 13.6 Find操作的優化(壓縮路徑)

天勤部分

1. 樹的基礎知識


樹是一種遞歸定義的數據結構。遞歸特性:當前每一層都跟上一層有類似的結構,每一個子結構跟其父結構都類似。

1.1 結點的度

1.2 樹的度


所有結點中最大的分支數就是樹的度。

1.3 葉子結點


度為0的結點就是葉子結點。

1.4 雙親結點、孩子結點、祖先結點和子孫結點



1.5 兄弟結點和堂兄弟結點


1.6 高度和深度

1.7 存儲結構

這部分直接看下面王道的“10. 樹的存儲結構”。

2. 二叉樹的邏輯結構和存儲結構


2.1 性質


2.2 葉子結點數=雙分支結點數+1的靈活運用


當求一棵樹中的空指針個數等時,我們可以先在每個結點上填充上空指針,使得每個結點的度都為2,然后就可以運用公式了。

2.3 m叉樹的性質


王道部分

1. 樹的定義和基本術語





2. 樹的常考性質







3. 二叉樹的定義和基本術語


3.1 滿二叉樹和完全二叉樹

滿二叉樹是一種特殊的完全二叉樹。

3.2 二叉排序樹

3.3 平衡二叉樹


4. 二叉樹的性質

4.1 二叉樹的常考性質


結點樹=總度數+1;這的“1”表示的是根結點。

4.2 完全二叉樹的常考性質


這里的 h-1<log2 (n+1)<=h,表示的是log2 (n+1)在 h-1 和 h 之間相差不到一的小數,由于是<=h,所以向上取整。

5. 二叉樹的存儲結構

5.1 順序存儲





5.2 鏈式存儲



6. 二叉樹的先中后序遍歷





6.1 先序遍歷的代碼





6.2 中序遍歷的代碼


6.3 后序遍歷的代碼


6.4 遍歷算術表達式樹



7. 二叉樹的層序遍歷


8. 由遍歷序列構造二叉樹

8.1 不同二叉樹的遍歷序列





8.2 前序+中序遍歷序列


舉個例子:




8.3 后序+中序遍歷序列


舉個例子:





8.4 層序+中序遍歷


舉個例子:




再舉個例子:





必須跟中序序列組合才能確定唯一的二叉樹。

9. 線索二叉樹

9.1 線索二叉樹的概念

遍歷二叉樹是以一定的規則講二叉樹中的結點排列成一個線性序列,從而得到幾種遍歷序列,使得該序列中的每個結點(第一個和最后一個結點除外)都有一個直接前驅和直接后繼。
這種是沒有線索的時候,找遍歷序列中的前驅和后繼。

通過中序遍歷,先訪問D結點(visit(D)),然后繼續執行下去。

9.1.1 中序線索二叉樹

線索二叉樹的存儲結構


9.1.2 先序線索二叉樹


9.1.3 后序線索二叉樹




9.2 二叉樹的線索化(代碼實現)

9.2.1 中序線索化



9.2.2 先序線索化




9.2.3 后序線索化



9.3 線索二叉樹找前驅/后繼

9.3.1 中序線索二叉樹找中序后繼


9.3.2 中序線索二叉樹找中序前驅


9.3.3 先序線索二叉樹找先序后繼

9.3.4 先序線索二叉樹找先序前驅


9.3.5 后序線索二叉樹找后序前驅

9.3.6 后序線索二叉樹找后序后繼



10. 樹的存儲結構

10.1 雙親表示法(順序存儲)






10.2 孩子表示法(順序+鏈式存儲)


10.3 孩子兄弟表示法(鏈式存儲)



10.4 森林和二叉樹的轉換



11 樹、森林的遍歷

11.1 樹的先根遍歷

11.2 樹的后根遍歷

11.3 樹的層次遍歷

11.4 森林的先序遍歷


11.5 森林的中序遍歷



如果考試要是考到關于遍歷森林的代碼的話,我們可以先轉換成上述這種二叉樹(即森林用二叉樹來存儲),然后利用我們熟悉的二叉樹代碼繼續解決。

12. 哈夫曼樹

12.1 帶權路徑

12.2 哈夫曼樹的定義


只要是最優二叉樹就是哈夫曼樹。

12.3 哈夫曼樹的構造


12.4 哈夫曼編碼





13. 并查集(新增考點)

并查集的邏輯結構是一個集合。




這個時候我們可以將集合之間的關系類似地看成是森林,而每個集合中的元素也可以組成一棵樹。

13.1 查和并的實現


13.2 并查集的存儲結構

可以用雙親表示法來存儲并查集。

13.3 基本操作

13.4 代碼實現



13.5 Union操作的優化

優化思路:在每次Union操作構建樹的時候,盡量不要讓樹“長高”。
①用根結點的絕對值表示樹的結點總數。
②Union操作,讓小樹合并到大樹。


13.6 Find操作的優化(壓縮路徑)







每次Union時,都需要從指定元素出發找到該元素的根結點,也就是需要乘上Find函數的時間復雜度。

總結

以上是生活随笔為你收集整理的《数据结构》天勤和王道 第五章 树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。