от
Я написал такое решение, чтобы двоичное дерево симметричного обхода - LeetCode
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def inorderTraversal(self, root: "TreeNode") 

но не работать, как ожидалось 

Finished
Runtime: 48 ms
Your input  [1,null,2,3]
Output  [1]
Expected  [1,3,2]
В чем проблема с моим решением?

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

2 Ответы

0 голосов
от
Проблемы с вашим решением являются: если вам не осталось, вы печатать узла и возвращение из поддерева не ладится если у вас осталось, вы добавить его. что может вызвать бесконечный цикл (когда вы вернетесь из левой ты снова добавить его) Исправить свои решения: если у вас нет левой, печатать узел и поместить на стек если у вас есть слева, левой на стеке и снимите левый указатель из узлов дерева, так что вы не добавить его еще раз по возвращении. Другой подход, если вы не можете уничтожить дерево: пройти весь путь налево, поставив все узлы по пути на стек при удалении узла из стека, напечатать его, идите направо, а потом влево, поставив все узлы в стеке. решение класс:
def inorderTraversal(self, root: "TreeNode")
0 голосов
от
Решение, когда вы пишете код с деревом очень oftent использовать рекурсию в вашем случае код, который вы ищите будет :
def inorderTraversal(root):
    result = []
    if root.left != None:
        result.extend(inorderTraversal(root.left))
    result.append(root.val)
    if root.right != None:
        result.extend(inorderTraversal(root.right))
    return result
Если непонятно, пожалуйста, спрашивайте меня, я буду добавлять больше точности
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...