1
请注意,这是家庭作业! - >我不是在寻找直接代码的例子,而是一些温和的按摩我的推理...DrRacket删除二叉搜索树的根
我被要求写一个函数,通过做三件事去除二叉搜索树的根: i)将树右移 ii)删除右子树的根(这是原始bst根) iii)用新根(它是原始树的左边)和适当的重排来重建bst该节点的孩子......这是我有:
(define (rm-root my-bst)
(list (key (rot-r my-bst))
(left (rot-r my-bst))
(append (right (right (rot-r my-bst)))
(left (right (rot-r my-bst))))))
这是所有伟大的,期待它不与childr重建树zh_cn被“提升”到根节点的节点。任何人都可以帮助我思考我应该如何去实现它?我应该提到,我们已经将Bst定义为列表,并且函数rot -r将bst旋转到右侧。谢谢。