Я делаю программу, которая берет дерево и случайно выбирает ветку (влево или вправо) и возвращает эти значения в списке. По какой-то причине он не работает. Любая помощь?Пройдите случайно через двоичное дерево?
Пример:
~(rand-walk (tree 1 (leaf 2) (leaf 3)))
(1 2)
Это то, что я до сих пор:
(define (rand-walk tr)
(if (empty-tree? tr) '()
(if (leaf? tr) tr
(if (equal? (random 1) 0)
(cons ((root-value tr)(root-value (left-subtree tr))) '())
(cons ((root-value tr)(root-value (right-subtree tr))) '())))))
Спасибо за обмен вашего кода. У вас есть вопрос? – paddy
Извините. Я забыл добавить свой вопрос. Я не могу понять, как вернуть значения в списке. И возвращаются только поддеревья – 2013-03-27 00:50:49
Ну, я даже не знаю ** схемы **, но мне кажется, что вы не делаете никаких рекурсивных вызовов. Разве «rand-walk» нельзя называть рекурсивно? – paddy