BST最小的方案

时间:2015-11-02 00:59:11

标签: list tree scheme binary-tree binary-search-tree

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

(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)))
    ))

1 个答案:

答案 0 :(得分:1)

你必须一直走到树的左边,直到你无法继续前进。在您的代码中,第二个条件不正确 - 不需要测试值,我们知道最左边的元素将是构造的最小。试试这个:

(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)))))