值得了解的九種樹形資料結構 - Franco
Franco總結了九種常見的樹形資料結構 :
- binary search tree
- red-black tree
- generic tree
- binary tree
- splay tree
- AVL tree
- B-tree
- Treap
- Trie
通用樹
表示不同節點之間關係的分層資料結構。它可以不包含節點或 1 個具有 0 個或多個子樹的特殊節點(根)。每個節點只有 1 個父節點,但可以有多個子節點。
用途:
- 層次結構沒有限制。
- 通常可儲存任何分層資料(即資料夾結構)
二叉樹
描述樹資料結構,其中一個節點最多可以有 2 個子節點。節點的孩子被稱為左孩子和右孩子。
用途:
- 由編譯器用於構建語法樹
- 用於實現表示式解析和評估
- 用於在網路中儲存路由錶連結路由器
- 用於資料壓縮編碼演算法
二叉搜尋樹
具有唯一屬性的二叉樹的受限擴充套件。給定一個節點,其左子節點的值小於或等於父節點的值。其右孩子的值大於或等於父值。
用途:
- 用於實現簡單的排序演算法
- 用於維護已排序的資料流
- 用於實現雙端優先順序佇列
- 用於資料不斷進入和離開的搜尋應用程式
AVL 樹
描述一種自平衡二叉搜尋樹。每個節點都關聯了一個值,表示其左右子樹之間的高度差。操作後,如果這些差值大於 1,則執行旋轉以平衡樹。
用途:
- - 用於需要在樹中頻繁插入的每種情況
- - 在 Linux 核心的記憶體管理子系統中用於在搶佔期間搜尋程式的記憶體區域
紅黑樹
描述自平衡二叉搜尋樹。每個節點要麼是紅色,要麼是黑色。根和葉是黑色的。如果一個節點是紅色的,它的兩個孩子都是黑色的。從給定節點到任何葉子的每條路徑都必須具有相同數量的黑色節點。
用途:
- - 用於計算幾何以降低演算法的時間複雜度
- - 用於在 Linux 中實現 CPU 程式排程程式
- - 用於關聯資料結構的各種實現(即 C++ 對映、集合、Java HashMap)
展開splay樹
描述一種自平衡二叉搜尋樹。最近訪問的節點可以快速再次訪問。在插入或搜尋之後,稱為 splaying 的操作重新排列樹(使用旋轉),以便將涉及的元素作為根放置。
用途:
- - 用於實現快取
- - 用於垃圾收集器
- - 用於資料壓縮
Treap
描述混合堆和樹的二叉搜尋樹。每個節點都有一個鍵和一個優先順序。鍵遵循二叉搜尋樹屬性。優先順序(通常是隨機值)遵循堆屬性。
用途:
- - 用於維護基於非對稱加密的應用程式中的授權證照
- - 用於執行快速設定操作(即聯合、相交)
B 樹
描述包含多個節點的自平衡搜尋樹,這些節點按排序順序儲存資料。每個節點有 n 個鍵(按升序儲存)和 n+1 個子節點。鍵分離了儲存在每個子樹中的鍵的範圍
用途:
- - 用於資料庫索引以加快搜尋
- - 用於檔案系統以實現目錄
Trie
描述 一種樹資料結構,其節點儲存字母表中的字母。從根到葉的每條路徑構成一個詞。一個節點的所有後代共享一個與該節點關聯的公共字首。
用途:
- - 用於自動完成文字系統
- - 用於實現拼寫檢查
- - 用於解決文字遊戲
相關文章
- 七、基本資料結構(樹形結構)資料結構
- 資料結構中樹形結構簡介資料結構
- 前端樹形Tree資料結構使用-🤸🏻♂️各種姿勢總結前端資料結構
- 樹形結構
- 樹形資料構造的方法
- js將有父子關係的資料轉換成樹形結構資料JS
- 資料結構——樹資料結構
- 資料結構-樹資料結構
- 樹形結構處理
- LayUI—tree樹形結構的使用UI
- 18 張圖,一文了解 8 種常見的資料結構資料結構
- markdown樹形結構生成工具
- 資料結構 - 樹,初探資料結構
- 資料結構 - AVL 樹資料結構
- 前端資料結構--樹前端資料結構
- 資料結構-字典樹資料結構
- 資料結構之「樹」資料結構
- 『資料結構』樹(Tree)資料結構
- Linux 下樹形結構的檢視Linux
- 樹狀的資料結構的建立資料結構
- 資料結構學習之樹結構資料結構
- 資料結構(樹):二叉樹資料結構二叉樹
- Android中需要了解的資料結構(四)Android資料結構
- Android中需要了解的資料結構(三)Android資料結構
- Android中需要了解的資料結構(二)Android資料結構
- Android中需要了解的資料結構(一)Android資料結構
- 前端也需要了解的資料結構-連結串列前端資料結構
- 資料結構之樹( 線段樹,字典樹)資料結構
- 資料結構 - 樹,再探資料結構
- [資料結構] 劃分樹資料結構
- 資料結構-線段樹資料結構
- 資料結構--紅黑樹資料結構
- 資料結構丨字首樹資料結構
- 資料結構——樹和森林資料結構
- 【資料結構】搜尋樹資料結構
- 資料結構之「AVL樹」資料結構
- 資料結構-佇列-樹資料結構佇列
- [譯] Golang 資料結構:樹Golang資料結構