scheme - 在树中创建一个列表
问题描述
它不能正常工作
(define (tree-insert v t)
(cond((null? t)(make-tree v '() '()))
((eq? v (value t)) t)
((< v (value t)) (make-tree (value t)
(tree-insert v (left t))
(right t)))
((> v (value t)) (make-tree (value t)
(tree-insert v (right t))
(left t)))))
(define (insert-list l t)
(if (null? l)
t
(insert-list (cdr l)
(tree-insert(car l)t))))
(insert-list '(5 2 1 3 11 8 6 9 15 17) '())
; ==> (5 (2 (1 (17 () ()) (8 () ())) (3 (9 () ()) ())) (11 (15 () ()) (6 () ())))
解决方案
您在 > 情况下左右交换。试试这个:
(define (tree-insert v t)
(cond((null? t)(make-tree v '()'()))
((eq? v (value t)) t)
((< v (value t)) (make-tree (value t)
(tree-insert v (left t))
(right t)))
((> v (value t)) (make-tree (value t)
(left t)
(tree-insert v (right t))))))
推荐阅读
- r - 在表中添加观察并赋予给定观察的属性(连接)
- r - 循环中的 Grep 函数
- macos - 如果服务器是 Mac,如何将 IntelliJ IDEA 作为 X Windows 应用程序远程启动?
- node.js - NodeJS 和 Firebase/Firestore 跟踪时间并自动更新
- c++ - 使用 apache2-utils 调用时 boost.asio 服务器响应挂起
- java - Java8 Stream:在流中使用 if/else 条件
- nuxt.js - 如何在 nuxtjs 中实现 ltr/rtl
- ios - 使用动画 Swift 5 关闭默认卡片演示文稿(.automatic)
- c++ - 如何返回或护理项目列表基于几个类别
- javascript - 提交联系表后显示“谢谢”消息