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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

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

?

%%%%%%

字符串模式匹配算法--詳解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為向下取整。

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

鏈域:就是地址

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

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

?

?

?

總結

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

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