日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

数据结构——树、二叉树、森林、哈夫曼树、字符串模式匹配

發布時間:2025/4/16 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构——树、二叉树、森林、哈夫曼树、字符串模式匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

%%%%%%

字符串模式匹配算法--詳解KMP算法

https://blog.csdn.net/zc474235918/article/details/40474525

http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html

%%%%%%

樹的定義和基本術語

其實是一個遞歸的定義。每個有限集也是一個樹。

?

樹的抽象數據類型ADT

數據對象D:具有相同特征的數據元素的集合

數據關系R:

?

其他表示方法:

集合的圓圈方法、層次的目錄

?

?

?二叉樹

左右之分。有序樹。

完全二叉樹 節點數為10 的話,必須連續的1-10,中間不能斷。

性質4中log為向下取整。

順序結構:對滿二叉樹比較好。 非完全二叉樹,沒有元素就為空。空間浪費。

鏈域:就是地址

空鏈域就是沒有孩子的地址。

n個節點有2n個鏈域。 有n-1個分支,每個分支就是一個地址,就是一個鏈域。2n-(n-1)=n+1個空鏈域。

?

?

遍歷二叉樹

先序就是先根。

遍歷都是遞歸的思想。

上面:

函數指針作為函數參數傳遞https://www.cnblogs.com/jainszhang/p/10704514.html

?

二叉鏈表的存儲形式

?

的數據結構實現中序遍歷:

和下面先序只是訪問元素的時機不同。其他都相同。VIsit函數位置不同。

先序是入棧的時候就訪問根節點。 中序是出棧的時候才訪問節點。

?

線索二叉樹

二叉樹為非線性結構 用一種方法 讓它線性化

線性序列 ?按照某一種遍歷的方法 排列成一個順序。

?

n個節點,肯定有n-1個分叉,有n-1個節點有唯一雙親,1個根節點沒有雙親。

有2n個鏈域,所以2n-(n-1)個空鏈域。所以有n+1個空鏈域。

?

?

a + b * - - - - e / f

線索化的目的是給空的鏈域 變為 非空。 可以通過中序、先序等方法來實現線索化。

?

?

層次遍歷:

?

?

樹和森林

數組下標為雙親的位置。

?

數組存放data和右邊一個指針域,為一個單鏈表,下標指向孩子的位置

?

孩子雙親表示法:

左邊為雙親位置,右邊為孩子位置,感覺這個圖和上面二叉樹的圖不對應。

孩子兄弟表示法:

森林和二叉樹的對應關系:

?

樹和森林的遍歷

?

下面一個例題很不錯:

?

哈夫曼樹以及其應用

注意:葉子節點是最外面的節點,度為0。

中間的叫分支節點。

權值作為葉子節點構造哈夫曼樹。

簡單的說就是不斷找當前最小權值的兩個樹。

?

n個葉子節點。剩下節點為n-1個。共有2n-1個節點。為嚴格二叉樹。

哈夫曼編碼:左孩子為0,右邊為1

?

?

?

總結

以上是生活随笔為你收集整理的数据结构——树、二叉树、森林、哈夫曼树、字符串模式匹配的全部內容,希望文章能夠幫你解決所遇到的問題。

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