Скажем, у меня есть список, как так:Как конвертировать плоский список в бинарное дерево
flat_list = [None, 10, 5, 15, None, None, 11, 22]
Я знаю, что алгоритм создания дерева из укрытого списка выглядит:
def create_tree_from_nested_list(node_list):
if not node_list:
return node_list
d, l, r = node_list
tree = BinaryTree(d)
tree.set_left(create_tree_from_nested_list(l))
tree.set_right(create_tree_from_nested_list(r))
return tree
выход для кода выше будет:
10
(l) 5
(r) 15
(l) 11
(r) 22
Как бы идти о создании функции для плоских списков в деревья, так что левые сохраняются в позиции индекса 2*i
, а правые сохраняются в позиции индекса 2 * i + 1
, а результат совпадает с выходом для вложенного списка. Любая помощь приветствуется.
За любовь Гвидо! Остановитесь с геттерами и сеттерами. Это не Java. –
В любом случае, я действительно не задаю вопрос. Каков ожидаемый результат? Какой будет эквивалентный вложенный список? –
Прошу прощения, я должен был уточнить. Результат должен быть одинаковым для вложенного списка и плоского списка. –