Я пытаюсь написать функцию, которая принимает дерево и возвращает новое дерево, в котором каждый узел покрывает всех своих дочерних элементов и имеет квадратные скобки вокруг него.
Это моя текущая функция.Мне было трудно отслеживать, что происходит из-за рекурсии, и даже после некоторого времени, проведенного за игрой, определить проблему / проблемы все еще сложно.
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", ())))))
ожидаемый результат,
('[hello_____]', (('[a]', ()), ('[b______]', (('[cde]', ()), ('[fg]', ())))))
b сопровождается 6 подчеркиваниями, поскольку len ('[cde]' + '[fg]') - 2-len ('a') равно 6,минус два - для внешних скобок.