我有一个关于如何从节点(根)中删除子节点的问题?由于我无法调用remove,如果我将 child 设为空,该 child 的 child 会向上移动吗?就像,我会把它初始化为空吗?或者我会指着 child 的 child ?
最佳答案
在传统的二叉搜索树中,删除节点可能会产生不同的后果,具体取决于该节点有多少个子节点:
- 可以简单地删除没有子节点的节点
- 可以删除具有一个子节点的节点,并且该节点将由其唯一的子节点替换。无论 child 是左 child 还是右 child ,这都适用。
- 有两个子节点的规则稍微复杂一些:必须找到要删除的节点的中序后继或中序前驱,然后替换当前节点的值与其后继或前驱的值,然后删除后继或前驱(根据这些规则)。
关于java二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1655387/