Это не вопрос домашней работы. Я слышал, что можно зеркалировать двоичное дерево, т. Е. Переворачивать его в постоянное время. Это действительно так?Зернистое двоичное дерево в постоянное время
3
A
ответ
4
Конечно, в зависимости от структуры данных вы просто выполняете эквивалент: вместо перехода по левому узлу, а затем по правому узлу, вы проходите по правому узлу, а затем по левому узлу. Это может быть параметр, передаваемый в рекурсивную функцию, которая пересекает дерево (т. Е. В C/C++, a bool bDoLeftFirst
и оператор if, который использует этот параметр для определения того, какой порядок пересекает дочерние узлы).
1
Возможно, вы имели в виду «invert binary tree», проблема, которую Max Howell не смог решить и таким образом отклонил Google?
https://leetcode.com/problems/invert-binary-tree/
Вы можете найти решения в разделе "обсудить".
Смежные вопросы
- 1. Постоянное двоичное дерево/таблица хэшей в .Net
- 2. Двоичное дерево/двоичное дерево поиска
- 3. Двоичное дерево в двоичное дерево поиска (BST)
- 4. C++ время компиляции построено двоичное дерево поиска
- 5. вставка в двоичное дерево
- 6. Двоичное дерево в C++
- 7. Двоичное дерево в Eiffel
- 8. Двоичное дерево в Scala
- 9. Двоичное дерево в Java
- 10. Двоичное дерево поиска Пояснение
- 11. Двоичное дерево поиска поиска
- 12. Двоичное дерево inorder transversal
- 13. Haskell: сгладить двоичное дерево
- 14. Двоичное дерево член Функция
- 15. Двоичное дерево поиска в SML
- 16. Как преобразовать дерево в потоковое двоичное дерево
- 17. двоичное дерево рекурсивно поиск c код [не двоичное дерево поиска]
- 18. Как создать двоичное дерево (не двоичное дерево поиска)
- 19. Дисплей Двоичное дерево в Java
- 20. Как сериализовать двоичное дерево
- 21. Как создать двоичное дерево
- 22. Двоичное дерево каталогов UNIX
- 23. Двоичное дерево поиска? Алгоритм
- 24. Баланс Двоичное дерево Кодирование
- 25. Двоичное дерево поиска строк
- 26. Двоичное дерево поиска слева.
- 27. Двоичное дерево поиска - вставка
- 28. Двоичное дерево поиска, высота
- 29. Почему двоичное дерево поиска?
- 30. C++ двоичное дерево поиска
Разве это не O (n), поскольку вы пересекаете все дерево? OP запрашивает постоянное время –
Это могут быть не левые/правые узлы, а узлы a/b, а параметр будет определять, является ли это слева или справа, следовательно, постоянное время –
@ cricket_007 - я думаю, дело в том, что «зеркалирование» отдельно от обхода. Чтобы избежать аргументов педантирования, вы можете сделать часть флага типа направления структуры данных, определяя роли дочерних указателей. Это O (1) для переключения флага, поэтому O (1) переопределяет роли дочерних указателей. Все, что делает указатель left-child * be * указателем left-child - это имя и то, как вы его используете, - измените их, и нет причин, по которым роли не могут меняться во время выполнения, как определено флагом, который также является частью структура данных. – Steve314