【发布时间】:2013-10-26 02:16:22
【问题描述】:
我正在尝试从方案中的二叉搜索树中删除一个节点,但在删除部分代码时遇到了问题。如何删除节点值而不在方案中创建新树?
(define (delete-node v T)
(cond ((null? T) '())
((< v (value T))
(delete-node v (left T)))
((> v (value T))
(delete-node v (right T)))
(else
(cond ((and (null? (right T))(not (null? (left T)))) '())
;promote the (left T) to the node
;repeat
((and (null? (left T))(not (null? (right T)))) '())
;promote the (right T) to the node
;repeat
【问题讨论】:
-
如果我需要为这段代码创建一棵新树,我并不反对,我只是看不出它是如何工作的。
-
向我们展示如何构建示例树。
标签: recursion scheme binary-tree nodes