我对如何从节点(根)删除孩子有疑问?由于无法调用remove,因此如果我将孩子设为空,那么该孩子的孩子会向上移动吗?就像,我将其初始化为null吗?还是我要指出孩子的孩子?
最佳答案
在传统的二进制搜索树中,删除节点可能会产生不同的结果,具体取决于该节点有多少个子节点:
没有孩子的节点可以简单地删除
可以删除具有一个子节点的节点,并将该节点替换为其唯一的子节点。无论孩子是左还是右孩子,这都适用。
具有两个子节点的节点的规则稍微复杂一些:您必须找到要删除的节点的有序后继者或有序前任者,用其前任者或前任者的值替换当前节点的值,然后删除后继者或前任者的值(根据这些规则)。