Я пытаюсь выполнить обход дерева по порядку. Сам код чувствует себя хорошо, за исключением того, что он не работает должным образом. У меня есть чувство, что он должен либо работать с условием if, как append работает на python, либо что-то, возможно, с возвратом. Это работает правильно, если я использую печать вместо возврата, я думаю, но я хочу иметь возможность использовать return и все равно получить правильный ответ. Например, для дерева [1, None, 2,3] мой код возвращает [1], что явно неверно.Inorder Binary Tree Traversal (используя Python)
Кроме того, можно решить эту проблему, используя понимание списка? Если это так, то любой примерный код будет с большой благодарностью.
Вот мой код:
class Solution(object):
def inorderTraversal(self, root):
res = []
if root:
self.inorderTraversal(root.left)
res.append(root.val)
self.inorderTraversal(root.right)
return res
Кроме того, прежде чем отметить это как дубликат, я знаю, в обходах порядке было предложено на Stackoverflow (много раз), но ни один из них не помог мне понять, почему мое понимание неправильно. Я был бы так благодарен, если бы кто-то помог мне научиться исправлять мой подход или просто публиковать другую ссылку без объяснения причин. Спасибо огромное!
Как дерево структурировано? –
Это двоичное дерево (не обязательно двоичный поиск). Например, список, переданный в корень, имеет корень формата, левое дерево, правое дерево .... [1, None, 2,3] имеет корень из 1, без левого дочернего элемента, правый дочерний элемент 2 (который имеет левое дитя 3). –
Причина, по которой я прошу, состоит в том, что вы, кажется, передаете список для 'root', но списки не имеют атрибута' left' или 'right' –