Я пытаюсь написать алгоритм обхода обхода для двоичного дерева с использованием RACKET/DR. РЭКЕТДвоичное дерево inorder traversal Racket
(define (print-records node number)
(cond
[(not (empty? node-left))(print-records (node-left node) number)]
*Do This before moving to next IF clause*
[(not (empty? node-right))(print-records(node-right node) number)]
))
Я пытаюсь следовать следующему алгоритму
InOrder(node)
if node is null return
InOrder(node.left)
Print(node)
InOrder(node.Right)
Моя проблема заключается в том, что через COND я могу исполнить одно выражение, и она будет пропускать все остальное. Я попытался добавить два выражения под одним, это не сработало, например, ((a) (b)). Я также пытался сделать вспомогательную процедуру, но это тоже не сработало.
Он имеет проблемы с функцией * печать *. Он ожидает одно выражение, но вы предоставили 2 дополнительных (после того, как я думаю) – Achilles
@Achilles, как я сказал выше: это всего лишь пример. Я не знаю, какую функцию печати вы должны использовать, замените эту строку на фактический код. Пожалуйста, перечитайте мой ответ, я отредактировал его, чтобы сделать его более ясным. –
В этой строке я в основном хочу вызвать функцию, которая выводит результат пользователю (он делает сравнение между «числом» и значением узла, прежде чем выбирать, что печатать. – Achilles