试图从BST中删除节点。执行后,节点仍然保留在树中。我如何正确实施它?实现在二叉搜索树中删除节点
public void deleteNode(TreeNode removeNode, TreeNode root)
{
if(removeNode.Left==null && removeNode.Right==null) //0 children
{
removeNode = null;
}
else if(removeNode.Left==null)//1 children
{
removeNode = removeNode.Right;
}
else if(removeNode.Right==null)//1 children
{
removeNode = removeNode.Left;
}
else // 2 children
{
int successorValue = this.getSuccessor(removeNode, root);
TreeNode successor = this.search(successorValue,root);
removeNode.data = successor.data;
deleteNode(successor, root);
}
}
您是否必须遵循该方法签名或者您想出了什么? – 2013-04-27 15:17:40