TRIE数据结构中搜索操作的时间复杂度

时间:2017-12-21 07:06:08

标签: python algorithm data-structures trie

我正在尝试实现基于字典的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时有什么问题吗?

1 个答案:

答案 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的内存需求。