我編寫了一個Trie作爲Python中的類。搜索和插入功能很明顯,但現在我試圖編程python函數__str__
,我可以在屏幕上打印它。但我的功能不起作用!在Python中實現Trie
class Trie(object):
def __init__(self):
self.children = {}
self.val = None
def __str__(self):
s = ''
if self.children == {}: return ' | '
for i in self.children:
s = s + i + self.children[i].__str__()
return s
def insert(self, key, val):
if not key:
self.val = val
return
elif key[0] not in self.children:
self.children[key[0]] = Trie()
self.children[key[0]].insert(key[1:], val)
現在,如果我創建特里結構的一個對象:
tr = Trie()
tr.insert('hallo', 54)
tr.insert('hello', 69)
tr.insert('hellas', 99)
當我現在打印特里,occures問題的條目打招呼,HELLAS不完全。
print tr
hallo | ellas | o
我該如何解決這個問題?
這種感覺就像你實現什麼其實是一個'node'。 – Elazar
與標題:['pytrie'](https://bitbucket.org/gsakkis/pytrie/src/1bbd6dec97df4a8f3ae0f0cf6b91586c1556e932/pytrie.py?at=default#cl-100) – jfs
你在這裏顯示的代碼是錯誤的(和可能不是你實際使用的代碼):在'__str__'結尾你只是'返回',你不'返回'。而不是返回不完整的結果,這隻會導致TypeError被引發。 – kampu