當前位置:成語大全網 - 新華字典 - 數據結構樹和二叉樹有哪些實際應用?

數據結構樹和二叉樹有哪些實際應用?

壹個單位有10個部門,每個部門都有壹部電話,但是整個單位只有壹根外線,當有電話打過來的時候,由轉接員轉到內線電話,已知各部門使用外線電話的頻率為(次/天)

5 20 10 12 8 4 ?3 5 6 9

問應該如何設計個內線電話號碼,使得接線員撥號次數盡可能少?

這是哈夫曼樹的應用。

壹種數據結構,用於保存和處理樹狀的數據,如家譜。

應用極為廣泛,因為根據數據結構的理論,任何復雜的樹夠可以轉換為二叉中並進行處理。

二叉樹再排序、查找、大規模數據索引方面有很多很多應用。

二叉樹排序是簡單算法排序中速度最快的。

樹的壹個大類是自平衡二叉搜索樹 (self-balanced BST), 變種特別多:RB 樹是每個節點是紅色或者黑色, 顏色隔代遺傳AVL 樹是每個節點包含平衡因子, 等於左高-右高Splay 樹是每個節點帶個父節點的指針Treap 是每個節點都帶個隨機的 priority number, parent priority >= child priority。

自平衡二叉搜索樹在面試中經常出現, 但做網頁的互聯網碼農卻很少用得上,如果是當 Map 用, 往往還不如直接上哈希表. 如果是當排序用, 不如直接用排序算法... 不過也有有用的時候, 例如查找壹個數字的上下界。

樹的另壹個大類是 Trie, 特點是能保證字典序, 存儲詞典的空間壓縮率高, 能做前綴搜索. 在正則匹配, 數據壓縮, 構建索引都可能用到. Trie 也有不少變種:Double Array - trie 的壹個經典實現。

每個節點可以存壹段字符串而不限於壹個字符Judy Array - 基於 256-ary radix tree, 用了 20 種壓縮方式, 極其復雜...Burst Trie - 如果壹個子樹足夠小, 就用 binary 堆的方式存儲,。

不過壓縮效果壹般HAT Trie - 壓縮率高而且不容易出現 CPU cache miss, 查速接近哈希表而耗內存少得多. 節點可以是以下三種之壹: Array Hash, 序列化的 Bucket, 傳統 Trie nodeMARISA Trie - 壓縮率最高, 支持 mmap 載入, 也是用了很多壓縮技巧的復雜實現, 就是構建比較花時間, 也不能動態更新。