我必须对一个类的二进制搜索树进行硬编码。我对删除节点的删除方法有些了解,但是关于如何用...替换的信息却越来越多。
有人告诉我要使用右侧子树中的最左侧节点或左侧子树中的最右侧节点...我要替换为右侧子树中的最小节点还是左侧子树中的最大节点?
我使用哪一个会有所不同?我应该同时实现这两种功能,还是让程序分别关闭?
答案 0 :(得分:0)
实现哪一个都没关系。将删除的节点替换为左子树的最右节点或右子树的最左节点都将产生有效的二分搜索树。
如果需要,可以在它们之间交替尝试以保持一定的平衡。您还可以选择具有更高高度的子树以从中删除,以实现类似的目的。