【发布时间】:2018-09-05 04:38:26
【问题描述】:
这是我的节点定义:
class Node(object):
def __init__(self, val, children):
self.val = val
self.children = children
现在我必须在树中找到最大深度。我使用广度优先搜索来标记每个节点的级别,然后返回最大级别。
这是我的代码:
def maxDepth(self, root):
"""
:type root: Node
:rtype: int
"""
if(root == None):
return 0
q = []
q.append(root)
level={root.val:1}
while(len(q)>0):
s = q.pop(0)
for c in s.children:
q.append(c)
level[c.val]=level[s.val]+1
return max(level.values())
它在某些情况下有效,但在许多情况下给出了错误的答案。我不明白我在哪里错过了这个概念?
【问题讨论】:
-
你可以给出一个你得到错误答案的案例。
-
实际上我是在 leetcode 上提交代码,所以不能告诉你输入,但我得到了错误的答案,所以我的方法一定有问题
-
好的,可能有很多情况。如果某些节点共享一个相同的值,您的解决方案将得到错误的答案,因为您使用该值作为节点的键。
-
@pfctgeorge 是的,你是对的!谢谢
-
这是一个不会让你记录每个节点深度的算法:stackoverflow.com/questions/15013956/…
标签: python algorithm tree graph-theory breadth-first-search