我正在尝试实现基于字典的trie数据结构。请在下面找到python代码。
var calendar = $('#calendar').fullCalendar
({
dayClick: function (date, allDay, jsEvent, view)
{
$('#calendar').fullCalendar('renderEvent',
{
title : '휴진',
allDay : true,
start: date, //specify start date
stick : true,
backgroundColor: '#fe4978'
});
}
});
我发现搜索单词的复杂性是O(m),其中m是被搜索单词的长度。此外,添加单词的复杂度非常相似 - O(m)其中m是要添加的单词的长度。
问题: 这些复杂性太好了。有人可以证实这些复杂性吗?我在实施Trie时有什么问题吗?
答案 0 :(得分:2)
在TRIE中搜索的时间复杂度确实是O(k),其中k是要搜索的字符串的长度。这是正确且事实证明的事实。但是,存储要求是可以看到惩罚的地方。 Trie的每个节点都包含多个分支。每个分支代表键的可能特征。我们需要将每个键的最后一个节点标记为单词节点的结尾。 Trie节点字段isEndOfWord
用于将节点区分为字节点的末尾。
通常,插入和搜索成本为O(length_of_string),但Trie的内存要求为O(ALPHABET_SIZE * length_of_string * N),其中N是Trie中的键数。有效地表示trie节点(例如压缩的trie,三元搜索树等)以最小化trie的内存需求。