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)))))
所以我正在尝试编写一个代码 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)))))