【发布时间】:2015-05-11 13:09:14
【问题描述】:
代码的目标是搜索键 (k),如果找到,将值替换为 v。
(define-struct node (key value left right))
(define (insert k v tree)
(cond
[(empty? tree) (list k v) ]
[(equal? (node-key tree) k)
(make-node k v (insert k v (node-left tree))
(insert k v (node-right tree)))]
[else (make-node (node-key tree) (node-value tree)
(insert k v (node-left tree)) (insert k v (node-right tree)))]))
(define sample (make-node 2 "two"
(make-node 1 "one" empty empty)
(make-node 3 "three" empty empty)))
带有样本和 1 个“hello”的输出应该是
(make-node 2 "two"
(make-node 1 "hello" empty empty)
(make-node 3 "three" empty empty))
反而是
(make-node 2 "two"
(make-node 1 "hello"
(list 1 "hello")
(list 1 "hello"))
(make-node 3 "three"
(list 1 "hello")
(list 1 "hello")))
有什么建议可以让输出达到想要的效果吗?
【问题讨论】:
标签: search tree scheme binary-tree racket