对于树中的每个节点,在每个节点上添加下划线,以便覆盖所有子级

时间:2019-07-04 09:34:50

标签: python recursion tree tuples

我正在尝试编写一个包含一棵树的函数,并返回一棵新树,其中每个节点都覆盖了它的所有子节点,并在其周围带有括号。

这是我当前的功能。我发现很难跟踪由于递归而发生的事情,即使经过一段时间后,查明问题仍然具有挑战性。

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用于外括号。

0 个答案:

没有答案