【发布时间】:2017-07-22 20:42:56
【问题描述】:
我编写此代码来测试前缀树,但由于某种原因,我收到错误“TrieNode”对象不可调用。有人可以帮我解决这个错误吗?
为什么 TrieNode() 类不可调用?
# Prefix Tree or Trie Data Structure
class TrieNode(object):
def __init__(self):
self.children = {}
self.endOfWord = False
class Trie(object):
def __init__(self):
self.root = TrieNode()
def insert(self,word):
node = self.root()
for w in word:
if w not in node.children:
node.children[w] = TrieNode()
node = node.children[w]
node.endOfWord = True
def search(self,word):
node = self.root
for w in word:
if w not in node.children:
return False
node = node.children[w]
return node.endWord
def startsWith(self,prefix):
node = self.root
for w in prefix:
if w not in node.children:
return False
node = node.children[w]
return True
if __name__ == "__main__":
trie = Trie()
trie.insert("apple")
trie.insert("apples")
trie.insert("bat")
trie.insert("bate")
print trie.search("apple")
【问题讨论】:
-
发布完整的错误,包括堆栈跟踪
-
node = self.root()是您的错误。self.root已经是一个 TrieNode 实例,您正在尝试调用它。 -
我从这里猜测:
node = self.root(),但是为什么你会认为 TrieNode 实例是可调用的? -
在发布 python 代码之前检查缩进...
标签: python python-2.7 tree trie