我正在尝试编写一个包含一棵树的函数,并返回一棵新树,其中每个节点都覆盖了它的所有子节点,并在其周围带有括号。
这是我当前的功能。我发现很难跟踪由于递归而发生的事情,即使经过一段时间后,查明问题仍然具有挑战性。
SpeechResult
输入
def covered_tree(node):
parent, children = node
new_node = None
for childs in children:
cover_len = 0
for each_child in childs:
covered_tree(childs)
cover_len += len(each_child)
cover_len -= len(parent)-2
parent = '['+parent+'_'*cover_len+']'
new_node = (parent, children)
return new_node
预期的输出
("hello", (("a", ()), ("b", (("cde", ()), ("fg", ())))))
b后跟6个下划线,因为len('[[cde]'+'[fg]')-2-len('a')为6,负号2用于外括号。