【发布时间】:2018-06-15 16:03:26
【问题描述】:
我正在练习一些递归编码
5
/ \
1 5
/ \ \
5 5 5
给定一棵二叉树,计算单值子树的数量。
单值子树意味着子树的所有节点都具有相同的值。
这是我想出的代码。但是,我必须把全局变量来计算单值的数量。我不知道如何摆脱它。这是我的代码。
def __init__(self):
self.count = 0
def countUnivalSubtrees(self, root):
def traverse(root):
if not root:
return {}
count_left = traverse(root.left)
count_right = traverse(root.right)
for k, v in count_right.items():
if k in count_left:
count_left[k] = count_left[k] + v
else:
count_left[k] = v
count_left[root.val] = count_left.get(root.val, 0) + 1
if len(count_left.keys()) == 1:
self.count += 1
return count_left
traverse(root)
return self.count
【问题讨论】:
-
将
count包装成一个对象并传递给所有traverse调用 -
你没有使用
traverse的返回值? -
@mad.meesh 但这只是哈希值?
-
根据您的代码,返回值将是
count_left...那是哈希吗?我不知道 -
有人看到全局变量吗?我在这里错过了什么?
标签: python algorithm recursion