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