BST-最小方案

BST-Smallest Scheme

所以我正在尝试编写一个代码 returns 二叉搜索树中的最小值。我知道这是树的最左边的值,并且我知道我需要它递归 运行 左边直到什么都没有。但是我的代码不起作用,我不知道为什么。任何帮助将不胜感激。

(define (bst-smallest bs-tree)
  (cond ((null? bs-tree)
     (display "undefined"))
    ((< (bst-value bs-tree) (bst-value (bst-left bs-tree))) 
     (bst-value (bst-left bs-tree)))
    (else 
     (bst-smallest (bst-left bs-tree)))
    ))

你只需要一直走到树的左边,直到你不能再走为止。在您的代码中,第二个条件不正确 - 无需测试值,我们知道最左边的元素将是最小值通过构造。试试这个:

(define (bst-smallest bs-tree)
  (cond ((null? bs-tree)
         (display "undefined"))
        ((null? (bst-left bs-tree))
         (bst-value bs-tree))
        (else
         (bst-smallest (bst-left bs-tree)))))