Data structures Trie数据结构的最佳/最差/平均情况下的Big-O运行时是什么?

Data structures Trie数据结构的最佳/最差/平均情况下的Big-O运行时是什么?,data-structures,runtime,big-o,trie,Data Structures,Runtime,Big O,Trie,用于插入和搜索的trie数据结构的最佳/最差/平均情况复杂度(用大O表示法)是多少 我认为所有情况下都是O(K),其中K是插入或搜索的任意字符串的长度。有人能证实这一点吗?WikMedia上有一些关于这一点的好信息 根据和,插入和搜索trie的最坏情况复杂度是O(M),其中M是键的长度。我找不到任何描述插入和搜索的最佳或平均案例复杂性的来源。但是,我们可以有把握地说,最佳和平均大小写复杂度是O(M),其中M是键的长度,因为Big-O只描述复杂度的上限。k:搜索或插入的字符串的长度 For Sea

用于插入和搜索的trie数据结构的最佳/最差/平均情况复杂度(用大O表示法)是多少


我认为所有情况下都是
O(K)
,其中
K
是插入或搜索的任意字符串的长度。有人能证实这一点吗?

WikMedia上有一些关于这一点的好信息

根据和,插入和搜索trie的最坏情况复杂度是
O(M)
,其中
M
是键的长度。我找不到任何描述插入和搜索的最佳或平均案例复杂性的来源。但是,我们可以有把握地说,最佳和平均大小写复杂度是
O(M)
,其中
M
是键的长度,因为Big-O只描述复杂度的上限。

k:搜索或插入的字符串的长度

For Search

Worst: O(26*k) = O(k)
Average: O(k)          # In this case, k is an average length of the string
Best: O(1)             # Your string is just 'a'.
Trie的复杂性不随搜索字符串的数量而变化,只随搜索字符串的长度而变化。这就是为什么在需要搜索的字符串数量很大时使用Trie,就像在英语词典中搜索整个词汇表一样

For Insertion

Worst: O(26*k) = O(k)
Average: O(k) 
Best: O(1)
所以,是的,你是对的。您可能已经看到了O(MN),这可能会让您感到困惑,但它只是简单地讨论了何时需要执行N次以上的O(k)操作

“Best”仍然是
O(k)
,因为如果是
'a'
(又称为长度为1的字符串),
k
的值是1