TypeError: "'TrieNode' object is not callable" - What is wrong with my code?
TypeError: "'TrieNode' object is not callable" - What is wrong with my code?
我写这段代码是为了测试前缀树,但出于某种原因我得到了错误 "TrieNode" object is not callable。有人可以帮我解决这个错误吗?
为什么 TrieNode() class 不可调用?
# 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")
应该是
def insert(self,word):
node = self.root
观看那里的 root()
-> root
。您当前正在调用实例属性,而实际上您只想获得对它的引用。
我写这段代码是为了测试前缀树,但出于某种原因我得到了错误 "TrieNode" object is not callable。有人可以帮我解决这个错误吗?
为什么 TrieNode() class 不可调用?
# 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")
应该是
def insert(self,word):
node = self.root
观看那里的 root()
-> root
。您当前正在调用实例属性,而实际上您只想获得对它的引用。