Я пытаюсь написать программу схемы, которая вводит определенную глубину двоичного дерева. Например, корень двоичного дерева равен 1, а затем корень левого под дерева равен 2 и так далее и далее. Я должен заставить его выводить выражение данных с глубиной в дереве. Сейчас у меня есть следующий код, но я постоянно получаю сообщение об ошибке:Как управлять двоичными деревьями схемы
Error in null?: expected a list; got '1'.
Если бы вы могли объяснить это, используя одни и те же термины в коде, который я использую это было бы здорово, как я учусь, и я не знаю, как использовать некоторые из более крупных выражений.
Это код
(define fetch-exp
(λ (n bt)
(cond [(empty-tree? bt) ▽#f]
[(> n (tree-depth (left-tree bt))) ▽#f]
[(> n (tree-depth (right-tree bt))) ▽#f]
[(one? n) (root bt)]
[(> (tree-depth (left-tree bt)) (tree-depth (right-tree bt)))
(fetch-exp (left-tree bt) (sub1 n))]
[(> (tree-depth (right-tree bt)) (tree-depth (left-tree bt)))
(fetch-exp (right-tree bt) (sub1 n))]
[else ▽#f])))
Большое спасибо , но есть ли способ создать одну и ту же функцию без использования «или» – Jim
Да, вместо этого замените предложение replace else двумя предложениями ((fetch-exp (sub1 n) (left-tree bt))) (else (fetch- exp (sub1 n) (right-tree bt))) Одно условие cond condures является законным, и если предложение ничего, кроме false, оно возвращает это значение, но это также немного уродливо. – WorBlux