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