list - BST-最小方案

标签 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)))
    ))

最佳答案

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

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

关于list - BST-最小方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33469132/

相关文章:

java - JAVA中将列表放入数组

java - 如何在 JavaScript 中循环遍历 Java List<Object[]> 对象?

extjs - Ext.js 可编辑树节点

recursion - 如何在 Clojure 中递归地展平任意嵌套的向量和映射?

java - Jackson Json遍历封装树

Emacs、Geiser 和 Chez Scheme 以及转录本

c# - 从一种类型的列表转换为另一种类型

python比较列表子列表的值并将值相加

webserver - 了解 Racket Web 框架中的发送/挂起/调度

vector - 如何从 Racket 中的向量中获取最小整数