KandQ:那年,那树,那些知识点
寫在前面:
?對于數(shù)據(jù)結構的學習,注定繞不開“樹”這一起著重要作用的數(shù)據(jù)結構。“樹”在整個數(shù)據(jù)結構的學習過程中具有舉足輕重的地位,而與“樹”相關的知識點,往往較為晦澀難懂且容易混淆、忘記。為此,打算根據(jù)自己的所學與所思,總結出較為常用的樹的相關知識點,同時還記錄了自動機的相關的知識,一方面用作自己的備忘錄,另一方面,用作分享。為此,如有不對的地方,希望各位能夠不吝指出。
ps:點擊相關的標題,即可進入相關的博文查看與其相關的知識點,這篇博文更多的是作為目錄使用
樹與二叉樹:樹(英語:tree)是一種抽象數(shù)據(jù)類型(ADT)或是作這種抽象數(shù)據(jù)類型的數(shù)據(jù)結構,用來模擬具有樹狀結構性質的數(shù)據(jù)集合。它是由n(n>0)個有限節(jié)點組成的一個具有層次關系的集合。把它叫做“樹”是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。樹形結構中數(shù)據(jù)元素之間具有一對多的邏輯關系,它反映了數(shù)據(jù)元素之間的層次關系,一個數(shù)據(jù)元素可以有多個后繼,但最多只能有一個前驅。二叉樹是樹里面的一個特殊形態(tài),每個節(jié)點最多只有兩個分支(不存在分支度大于2的節(jié)點)。通常分支被稱作“左子樹”和“右子樹”。二叉樹的分支具有左右次序,不能顛倒。該博文主要介紹了樹與二叉樹之間相關的概念
二叉樹:該博文主要介紹了二叉樹的存儲結構及其常見的操作,并給出了其相關代碼
樹、二叉樹與森林之間的轉換及其相關代碼實現(xiàn):樹與二叉樹之間,森林與二叉樹之間可以相互轉換,且這種轉換是一一對應的。樹與森林轉化為二叉樹之后,森林或樹的相關操作都轉換為二叉樹的操作。該博文主要介紹了樹的存儲結構、樹與二叉樹、森林與二叉樹之間的轉換過程及其相關的代碼
二叉查找樹(BST):二叉查找樹(英語:Binary Search Tree),也稱二叉搜索樹、有序二叉樹(英語:ordered binary tree),排序二叉樹(英語:sorted binary tree),二叉查找樹相比于其他數(shù)據(jù)結構的優(yōu)勢在于查找、插入的時間復雜度較低。該博文主要介紹二叉查找樹的相關內容。
哈弗曼樹:哈弗曼(Huffman)樹是一種在編碼技術方面得到廣泛應用的二叉樹,它同時也是一種最優(yōu)二叉樹。該博文主要介紹了哈弗曼樹相關內容
圖相關的最小生成樹(MST):該博文主要用于講解圖相關的兩個最小生成樹算法,即prim算法和Kruskal算法的思想及其實現(xiàn)
平衡二叉樹(AVL):平衡二叉樹(Balanced Binary Tree)又稱為AVL樹,它或是一棵空樹,或是一棵左子樹和右子樹都是平衡二叉樹,且左子樹和右子樹深度之差的絕對值不超過1的樹。該博文主要講解了平衡二叉樹的相關知識點
紅黑樹:紅黑樹(Red Black Tree) 是一種自平衡二叉查找樹,其是平衡二叉樹的一種實現(xiàn)。在紅黑樹上的操作都有著良好的最壞情況下的運行時間,即能夠保證O(logN)的時間內完成查找,插入和 刪除操作,N表示的是紅黑樹中節(jié)點的個數(shù)。該博文主要用于講解紅黑樹的相關知識點及其實現(xiàn)
跳表:跳表(SkipList)是一種隨機化的數(shù)據(jù)結構,跳表雖然不是樹,但是其性能和紅黑樹以及AVL樹不相上下,且其實現(xiàn)原理簡單。為此,將其和樹的相關知識點放在一起,是為了更加深刻的理解和掌握相應的數(shù)據(jù)結構。
B-樹:B-tree樹即B樹,B即Balanced,平衡的意思。B-樹是一種多路搜索樹(并不一定是二叉的),在文件系統(tǒng)中,B-樹已經(jīng)成為索引文件的一種有效結構,并得到了廣泛的應用。本博文主要用于講解B-樹相關的知識點及其實現(xiàn)
B+樹:B+樹是一種樹型數(shù)據(jù)結構,其是一個n叉排序樹,每個節(jié)點通常有多個孩子。B+ 樹通常用于數(shù)據(jù)庫和操作系統(tǒng)的文件系統(tǒng)中。B+樹的特點是能夠保持數(shù)據(jù)穩(wěn)定有序,其插入與修改擁有較穩(wěn)定的對數(shù)時間復雜度。本博文講解了B+樹相關的知識點以及其實現(xiàn)
單詞查找樹(Trie):trie,又稱前綴樹或字典樹,是一種有序樹,用于保存關聯(lián)數(shù)組,其中的鍵通常是字符串。Trie可以看作是一個確定有限狀態(tài)自動機。與二叉查找樹不同,鍵不是直接保存在節(jié)點中,而是由節(jié)點在樹中的位置決定。一個節(jié)點的所有子孫都有相同的前綴,也就是這個節(jié)點對應的字符串,而根節(jié)點對應空字符串。一般情況下,不是所有的節(jié)點都有對應的值,只有葉子節(jié)點和部分內部節(jié)點所對應的鍵才有相關的值。Trie這個術語來自于retrieval。根據(jù)詞源學。本博文主要講解了單詞查找樹的相關知識及其實現(xiàn)。
伸展樹:伸展樹(Splay Tree),也叫分裂樹,是一種二叉排序樹,它能在O(logN)內完成插入、查找和刪除操作。在伸展樹上的一般操作都基于伸展操作:假設想要對一個二叉查找樹執(zhí)行一系列的查找操作,為了使整個查找時間更小,被查頻率高的那些條目就應當經(jīng)常處于靠近樹根的位置。于是想到設計一個簡單方法, 在每次查找之后對樹進行重構,把被查找的條目搬移到離樹根近一些的地方。伸展樹應運而生。本博文介紹了伸展樹的相關的知識點及其實現(xiàn)
Treap(堆樹):Treap=Tree+Heap。Treap是一棵二叉排序樹,它的左子樹和右子樹分別是一個Treap,和一般的二叉排序樹不同的是,Treap記錄一個額外的數(shù)據(jù),就是優(yōu)先級。Treap在以關鍵碼構成二叉排序樹的同時,還滿足堆的性質(在這里我們假設節(jié)點的優(yōu)先級大于該節(jié)點的孩子的優(yōu)先級)。但是這里要注意的是Treap和二叉堆有一點不同,就是二叉堆必須是完全二叉樹,而Treap不一定是完全二叉樹。該博文主要講解了Treap樹相關的知識點及其實現(xiàn)
有限狀態(tài)自動機:有限狀態(tài)機(英語:finite-state machine,縮寫:FSM),簡稱狀態(tài)機,有限狀態(tài)自動機是一種特殊的狀態(tài)機。它表示有限個狀態(tài)以及在這些狀態(tài)之間的轉移和動作等行為的數(shù)學模型。該博文講解了有限狀態(tài)自動機的相關知識點及其應用示例。
轉載于:https://www.cnblogs.com/MyStringIsNotNull/p/8270433.html
總結
以上是生活随笔為你收集整理的KandQ:那年,那树,那些知识点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Xamarin实现跨平台移动应用开发
- 下一篇: 利用gcc的__attribute__编