試圖從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