我正在尝试解决一个问题,我返回一个数字出现在树中的最大深度。例如,如果树是这样的:
1
/ \
2 3
\
2
我的函数应该返回2。但是,我的函数返回0
^{pr2}$我的思维过程是不是错了?如果当前值与我要查找的值(即参数)匹配,我应该添加1
,如果它们不匹配,则不添加1
。我使用max()
所以它返回左子元素或右子元素的最大值,所以我得到深度更高的子元素。错了吗?在
以下是树类:
class TN:
def __init__(self,value,left=None,right=None):
self.value = value
self.left = left
self.right = right
这是我对树的构造:
tree4 = TN(2)
tree3 = TN(3, left = None, right = tree4)
tree2 = TN(2)
tree1 = TN(1, left = tree2, right = tree3)
print(max_depth(tree1, 2))
将打印0
我认为这是一个很好的
max_depth
编码我们添加一个附加参数
d
,默认值为0
。此参数用于跟踪当前深度。当返回一个答案时,我们只在节点t
值匹配时在max (d, ...)
中包含d
,否则,我们返回left
和right
结果的最大值这是你问题中的代码树
^{pr2}$找到每个值的最大深度
如果找不到该值,将返回
-1
如果我没弄错的话,你要解决的问题是:树中
value
值的最大深度是多少。您不仅应该在
t.value == value
时增加计数,而且还应该在树的任何子代与您要查找的值匹配时增加计数。这是因为你在测量深度。在以下是算法的外观:
相关问题 更多 >
编程相关推荐