У меня возникли проблемы с попыткой заполнить данные идеальным бинарным деревом с известным количеством узлов с правильными данными. В принципе, у меня есть реализация, которая создает это:Perfect Binary Tree с правильными данными
7
5 6
1 2 3 4
Однако, я ищу, чтобы создать дерево, как это:
7
3 6
1 2 4 5
Моя текущей реализации для вставки узлов дерева выглядит следующим образом.
def _add_node(self, val, ref = None):
# reference to root of tree
ref = self.root if ref is None else ref
if ref.right is None:
ref.right = Node(val, ref)
return
elif ref.left is None:
ref.left = Node(val, ref)
return
else:
parent = (val - 1)/2
if parent % 2 == 0:
self._add_node(val, ref.left)
else:
self._add_node(val, ref.right)
Учитывая x
узлы создать дерево с помощью range(x)
и вызывая add_node(i)
для каждой итерации. Это отлично работает, за исключением того, что его порядок неверен.
В течение жизни я не могу найти простой способ установить значения, представляющие нижний макет, а не верхний. Может кто-нибудь мне помочь?
Извините. Назад, когда я ответил на это, у меня не было комментариев. – Jay