【发布时间】:2019-08-15 06:09:11
【问题描述】:
所以我创建了这个节点类,它有一个子节点数组。现在我想遍历孩子以找到所有可能路径中成本/价值最小的总和。我正在应用深度优先搜索策略。但是在我的一个孩子经历了一次交互之后,我收到一个 TypeError 说“无法迭代 NodeType”
class Node:
def __init__(self, cost):
self.cost= cost
self.children = None
def get(self):
return self.cost
def findMinPath(self):
min_val = 10000
if self.children is None:
return self.cost
for child in self.children:
temp = child.findMinPath()
if temp<min_val:
min_val=temp
return min_val+self.cost
if __name__ =='__main__':
newnode = Node(0)
nodeleft= Node(5)
nodecenter=Node(3)
noderight=Node(6)
newnode.children={nodeleft,nodecenter,noderight}
nodeleft.children=(Node(4))
Nodecenterleft =Node(2)
Nodecenterright = Node(0)
nodecenter.children={Nodecenterleft,Nodecenterright}
Nodecenterleftleft=Node(1)
Nodecenterleft.children ={Nodecenterleftleft}
Nodecenterleftleftright= Node(1)
Nodecenterleftleft.children={Nodecenterleftleftright}
Nodecenterrightleft = Node(10)
Nodecenterright.children={Nodecenterrightleft}
Noderightleft=Node(1)
Noderightright=Node(5)
noderight.children ={Noderightleft,Noderightright}
print (newnode.findMinPath())
堆栈跟踪如下:
Traceback(最近一次调用最后一次): 文件“/Users/yashshah/Desktop/Initializer/tree.py”,第 45 行,在 打印 (newnode.findMinPath()) 文件“/Users/yashshah/Desktop/Initializer/tree.py”,第 17 行,在 findMinPath 中 temp = child.findMinPath() 文件“/Users/yashshah/Desktop/Initializer/tree.py”,第 16 行,在 findMinPath 中 对于self.children中的孩子: TypeError:“节点”对象不可迭代 [0.094s完成]
【问题讨论】:
-
您能否提供一个堆栈跟踪,并且由于您的代码没有行号,请告诉我们错误发生在哪一行?
-
有什么理由用 Java 标记这个问题?
-
是的,我是新来的@Karthik
-
@Steve Yeah Traceback(最近一次通话最后):文件“/Users/yashshah/Desktop/Initializer/tree.py”,第 45 行,在
print (newnode.findMinPath())文件“/Users/yashshah/Desktop/Initializer/tree.py”,第 17 行,在 findMinPath 中 temp = child.findMinPath() 文件“/Users/yashshah/Desktop/Initializer/tree.py”,第 16 行,在 findMinPath 中self.children 中的子项:TypeError:'Node' 对象不可迭代 [在 0.094 秒内完成]
标签: python