Во время обхода записать в массив
Так возвращает только первое значение
def preorder(self, node):
if not node:
return None
arr = []
arr.append(node.root)
self.preorder(node.left)
self.preorder(node.right)
return arr
Ответы (2 шт):
Автор решения: SmellyNS
→ Ссылка
При каждом вызове у вас создается пустой массив arr=[]. Конечно же, у вас вернется только первый элемент, так как возврат остальных вы никуда не направляете.
Передавайте arr как аргумент в функцию.
def preorder(self, node, arr = []):
if not node:
return None
arr.append(node.root)
arr = self.preorder(node.left, arr)
arr = self.preorder(node.right, arr)
return arr
Как-то примерно так. Не уверен, что именно ваш метод должен был делать, проверьте это.
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
def preorder(self, node):
if not node:
return None
arr = []
arr.append(node.root)
arr.append(self.preorder(node.left)) # + arr.append(...)
arr.append(self.preorder(node.right)) # + arr.append(...)
return arr