首先,这是作业,所以把它放在那里。
我应该用特定的方法实现一个二叉搜索树:
无效插入(字符串)、布尔删除(字符串)和布尔查找(字符串)。
我已经能够成功地编程和测试插入和查找方法,但是在删除时遇到了困难。
我的程序中发生的事情是删除实际上并没有从树中删除任何东西,我相信这是因为它只引用了当前节点的本地创建,但我可能是错的。我想我可以实现我需要测试的不同案例的逻辑(可能需要帮助删除一个有两个孩子案例的节点,但我认为我在概念上得到了它)主要是想了解我需要做些什么来引用树正确地在
current = null; // case
这是我到目前为止得到的:
public boolean remove(String title)
{
return remove(root, title);
}
private boolean remove(BSTNode current, String title)
{
if (current == null)
{
return false;
}
if (current.data == title)
{
if (current.left_child !=null && current.right_child != null)
{
return true; // returning true since I haven't finished writing this case
}
else if (current.left_child == null && current.right_child == null)
{
current = null; // this should remove the node from tree but it doesn't
return true;
}
else if (current.left_child != null && current.right_child == null)
{
current = current.left_child; // don't think this is right
return true;
}
else if (current.right_child != null && current.left_child == null)
{
current = current.right_child; // not sure about this
return true;
}
}
root = current;
if (title.compareToIgnoreCase(current.data) == -1)
{
return remove(current.left_child, title);
}
else
{
return remove(current.right_child, title);
}
}
任何知识都非常感谢。