Есть ли какой-либо алгоритм, который может рекурсивно пересекать дерево в порядке уровня и нерекурсивно в postorder.Thanks много.реверсивный реверсивный рельеф в первом порядке и в глубине-порядке
ответ
Чтобы получить эффективный рекурсивный поиск по ширине, вы можете использовать iterative deepening depth-first search. Это особенно хорошо для ситуаций, когда коэффициент ветвления высокий, где обычный поиск по ширине имеет тенденцию задыхаться от чрезмерного потребления памяти.
Редактировать:Marcos Marin already mentioned it, но для полноты картины, the Wikipedia page on breadth-first traversal описывает алгоритм, таким образом:
- Епдиеие корневой узел.
- Удалите узел и осмотрите его.
- Если искомый элемент найден в этом узле, закройте поиск и верните результат.
- В противном случае установите в очередь всех преемников (прямых дочерних узлов), которые еще не были обнаружены.
- Если очередь пуста, каждый узел на графе был рассмотрен - выйдите из поиска и верните «не найден».
- Повторите процедуру с шага 2.
Примечание: Используя стек вместо очереди превратит этот алгоритм в глубину первого поиска.
Эта последняя строка, очевидно, вам интересна, если вы хотите сделать нерекурсивный проход по глубине. Получение предварительного или пост-заказа - это просто вопрос о том, как добавить узлы на шаге 2.b.
Wikipedia говорит,
Traversal
По сравнению с линейными структурами данных как связанные списки и одномерные массивы, которые имеют только один логический средства обхода, древовидные структуры может быть пройденный во многих разных вариантах . Начиная с корня двоичного дерева , можно выполнить три основных этапа: и порядок в , который они выполняют, определяет тип обхода .
Эти шаги (ни в порядке) являются: выполняя действие на текущем узле (далее в качестве «посещения» узел), пересекая на левый дочерний узел, и перемещения к правому ребенка узел. Таким образом, процесс наиболее легко описывается через рекурсию.
Для перемещения непустого бинарного дерева в предзаказе, выполните следующие операции рекурсивно на каждый узле, , начиная с корневым узлом:
- Посетите узел.
- Перемещение левого поддерева.
- Пройдите вправо поддерева. (Это также называется Depth-first traversal.)
Для того, чтобы пройти через непустое бинарное дерево в заказовМои, выполнить следующие операции рекурсивно в каждом узле:
- траверс левого поддерева.
- Посетите узел.
- Пройдите вправо поддерева. (Это также называется Симметричный обход.)
Для того, чтобы пройти через непустое бинарное дерево в postorder, выполнить следующие операции рекурсивно в каждом узле:
- траверс левого поддерева.
- Пройдите вправо поддерева.
- Посетите узел.
Наконец, деревья также могут перемещаться в уровне порядка, где мы посещаем каждый узел на уровне, прежде чем идти к более низкого уровня.Это также называется Breadth-first traversal.
Вы можете возвращать дерево в порядке после итеративного использования, используя стек вместо стека неявного вызова, используемого в рекурсии.
- 1. Реверсивный слияние
- 2. Реверсивный перечислимый в Ruby
- 3. Реверсивный массив в C?
- 4. Реверсивный строки в C++
- 5. Реверсивный Приговоренный в Java
- 6. реверсивный порядок столбцов в файле
- 7. Реверсивный xticklabels в MATLAB 2014B
- 8. реверсивный массив на месте
- 9. реверсивный порядок udata_setCommonData
- 10. Реверсивный сдвиг tokenizer
- 11. Реверсивный порядок элементов в DOMNodeList
- 12. Реверсивный ctrl + leftclick в Spyder
- 13. Реверсивный порядок слов в предложении
- 14. Реверсивный порядок байтов в c
- 15. Реверсивный алгоритм шифрования в Python
- 16. реверсивный массив и кнопка набора
- 17. Реверсивный массив байтов в VB6
- 18. Реверсивный пустого диапазона в Ada
- 19. Реверсивный переход с задержкой
- 20. Реверсивный словарь для python
- 21. Реверсивный вычислительная платформа
- 22. Реверсивный граф ребра
- 23. Рекурсивный реверсивный массив Javascript
- 24. ориентация экрана - реверсивный портрет
- 25. Реверсивный исходный массив
- 26. Реверсивный хеш-тип algo?
- 27. Реверсивный алгоритм сортировки?
- 28. Python реверсивный фрагмент списка
- 29. Javascript: Реверсивный цикл ouput
- 30. Однострочный реверсивный шнур
Это ваша домашняя работа? –
нет, вчера вечером я принял участие в бумажном тестировании одной компании. – cppguy
На первом уровне вы имеете в виду ширину? – tonfa