问题描述
我需要帮助完成我的 deFriend Mthod。它现在的工作方式是删除指定要删除的第一个和第二个对象,但之后不会删除任何用户。它应该根据是否删除对象返回真/假。
以下是应该如何制作的说明: deFriend 方法将要从数据库中删除的 User 作为参数。这种方法 应该在树中搜索目标朋友并将其删除。这应该通过删除来实现 对用户的所有引用,并在适用时更新左值、右值和父值。去朋友 如果朋友被成功删除,则返回 true,如果未找到或其他一些错误情况,则返回 false。 如果朋友对象为空,则应抛出 IllegalArgumentException。
public boolean deFriend(User friend) throws IllegalArgumentException {
if (friend == null){
throw new IllegalArgumentException();
}
removeS = true;
root = removeFriend(root,friend);
return removeS;
}
public User removeFriend(User root,User friend){
if (root == null){
removeS = false;
return null;
}
if (friend.getKey() < root.getKey()){
root.setLeft(removeFriend(root.getLeft(),friend));
}else if (friend.getKey() > root.getKey()){
root.setRight(removeFriend(root.getRight(),friend));
}else {
if (root.getLeft() != null && root.getRight() != null){
User left = root.getLeft();
User right = root.getRight();
root = removeFriend(root.getRight(),root);
User minRight = root.getRight();
root.setLeft(left);
root.setRight(right);
if (root.getRight().getKey() == root.getKey()){
root.setRight(minRight);
}
}else if (root.getLeft() == null && root.getRight() == null){
root = null;
}else if(root.getLeft() != null){
root = root.getLeft();
}else {
root = root.getRight();
}
}
return root;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)