У меня есть упражнение, чтобы найти путь двоичного дерева в Схеме. В принципе, это похоже на поиск всех путей от корня до листьев дерева в схеме. Но вместо того, чтобы печатать значение узлов, мы должны напечатать способ добраться до листа. (печать: правая левая левая правая для ex)Путь схемы в двоичном дереве
ответ
Если вы говорите о поиске пути от корня до определенного листа, вы можете в основном искать свое дерево рекурсивно, и при этом вы должны передать список своей функции поиска в качестве параметра для отслеживания уже пройденного пути, и функция поиска должна возвращать список путей.
Например, предположим, что вы ищете L в своем дереве, вам нужно проверить, находится ли L в левом или правом поддереве. После нахождения поддерева, в котором L расположен вы можете в основном добавить направление в список пути, вы можете сделать что-то вроде
(define (search L tree)
(cond
((null? tree) '() )
((member L leftsubtree) (cons 'left (search L leftsubtree))
((member L rightsubtree) (cons 'right (search L rightsubtree)))))
Что мы делаем здесь мы нашли поддерево L расположен, а затем добавить направление (слева или справа) до начала пути от родителя этого поддерева до L. Конечно, если вы скопируете и вставьте этот код, это не сработает. Поэтому вам нужно реализовать эту функцию в соответствии с вашим древовидным представлением, и вам, вероятно, потребуется реализовать функцию-член для вашего случая. Я надеюсь, что это помогает.
(define (ab-chemin-aux AB e CH)
(if (ab-noeud? AB)
(if (equal? e (ab-etiquette AB))
CH
(or (ab-chemin-aux (ab-gauche AB) e (append CH (list "gauche")))
(ab-chemin-aux (ab-droit AB) e (append CH (list "droit")))))#f))
(define (ab-chemin AB e)
(ab-chemin-aux AB e (list)))
Я понял ответ, но я забыл про вас здесь. Спасибо за ваш ответ. Надеюсь, что это поможет кому-то
- 1. Путь в двоичном дереве - Пролог
- 2. Наименьший путь значения в двоичном дереве поиска
- 3. Путь к узлу в двоичном дереве
- 4. найти путь в двоичном несортированном дереве
- 5. Вставка в двоичном дереве поиска против вставки в двоичном дереве
- 6. Рекурсия в двоичном дереве
- 7. Количество листьев в двоичном дереве
- 8. Найти максимальную сумму листа в корневой путь в двоичном дереве
- 9. Найти сумму кратчайшего корня в путь листа в двоичном дереве
- 10. Путь данной суммы в двоичном дереве - в рекурсии | Java
- 11. о полном двоичном дереве
- 12. Как найти путь между двумя данными узлами в двоичном дереве
- 13. Как указать самый длинный путь в двоичном дереве?
- 14. Рекурсивно получить путь к узлу в двоичном дереве
- 15. Рекурсивно найти путь к узлу в двоичном дереве
- 16. Поиск узла в двоичном дереве
- 17. Couting оставляет в двоичном дереве
- 18. Поиск узла в двоичном дереве
- 19. Дубликаты в двоичном дереве поиска
- 20. Понимание указателей в двоичном дереве
- 21. Удаление в двоичном дереве поиска
- 22. Рекурсивная вставка в двоичном дереве
- 23. Узлы, пересекающиеся в двоичном дереве
- 24. Перегрузка оператора в двоичном дереве
- 25. Вставка в двоичном дереве поиска
- 26. обмен узлами в двоичном дереве
- 27. Случайный ноль в двоичном дереве
- 28. Поиск в двоичном дереве поиска
- 29. проверить дубликаты в двоичном дереве
- 30. Peterson Lock в двоичном дереве
См. Мой ответ ниже, чтобы узнать, как улучшить этот вопрос. – Peaches491
Хама, есть ли у вас код, чтобы показать, что вы приложили все усилия для его решения? –
Подсказка: добавьте параметр функции, который содержит «путь до сих пор». – molbdnilo