簡體   English   中英

是等價於 std::map 的 trie<std::string, int> 在 C++ 中?</std::string,>

[英]Is a trie equivalent to std::map<std::string, int> in C++?

trie的通常實現是否等同於

std::map<std::string, int>

在 C++ 中?

通過等價,我的意思是:它們是否具有相同的空間復雜度,它們各自的操作是否具有相同的時間復雜度?

不,我不相信。 std::map 和 std::set 通常實現為紅黑平衡二叉樹

前綴樹中的空間復雜度要好得多——您將一整串字符串的公共前綴存儲在一個統一的位置,而在二叉樹中,整個字符串存儲在節點中,因此前綴在每個節點中重復有它的字符串。

查找、插入、刪除的時間復雜度仍然是平均 O(log n)。 然而,常數因素通常很重要。 前綴樹通常以較低的高度但較大的寬度進行交易。 具體應用對於選擇哪一個很重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM