def get_paths(d, _c = []):
val, _l, _r = d
if _l is None and _r is None:
yield [*_c, val]
if _l is not None:
yield from get_paths(_l, _c = _c+[val])
if _r is not None:
yield from get_paths(_r, _c = _c+[val])
print(list(get_paths((1,(2,(4,(7,None,None),None),(5, None, None)),(3,None,(6, None,None))))))
下面是一个可读性更强的递归生成器:
这样做的另一个好处是,可以为具有任意数量子节点的节点工作。你知道吗
似乎您正在尝试解决这个问题:https://leetcode.com/problems/binary-tree-paths/
在这里,您可以简单地开始使用dfs探索树,并在树中存储值,并维护从根到当前节点的所有值的向量。处理完该节点后,只需从该向量中移除当前节点处的值。当我们到达叶节点时,我们只需将向量中的值附加到我们的答案中。你知道吗
以下是在cpp中实现的代码供您参考:
可以对生成器使用递归:
输出:
相关问题 更多 >
编程相关推荐