-1
def BFS(self, rootnode): 
    visited = [] 
    queue = [] 
    queue.append(rootnode) 
    while queue: 
     print(type(queue)) 
     curr_node = (queue.pop()) 
     for node in curr_node.nodes: 
      if node not in visited: 
       visited.append(node) 
       queue.append(node) 

....印刷型(object)返回兩個語句在Python

嗨,所以我想通過這個線索對象上進行迭代,但我無法通過其值迭代。數據結構保存節點,並且每個節點擁有兩個值,即單個字符值和其子元素的字典(其保存在nodes = {}中)。

我目前正在得到一個AttributeError:str沒有屬性節點在「curr_node.nodes中的節點:」 「我似乎無法弄清楚爲什麼。我檢查了返回類型節點的root節點的類型。我檢查了返回類字典的隊列節點對象的第一個值的類型。但是,當我嘗試遍歷該字典 時,我收到屬性錯誤。 *我也知道字典中的每個鍵都與一個節點配對。

我是否正確迭代了字典?

*這裏是初始呼叫 trie.BFS(trie.root.nodes [ '#'])

感謝

+1

「我檢查了隊列節點對象的第一個值的類型」 - 你在說什麼?你只打印「類型(隊列)」。 – user2357112

+0

對不起,這是一個省略的代碼行:我輸入了'print(type(queue [0] .nodes))',它返回了類字典 – tadpolili

回答

0

沒有看到節點的類定義,它很難說問題出在哪裏是。但是如果我必須猜測,curr_node.nodes包含一個str值。

以下輕微變化可能幫助。

if node not in visited and not isinstance(node,str):       
    visited.append(node) 
    queue.append(node) 

另外,如果visited是一組,那麼它會更有效率。