如何从 Java 中的 BTS 中删除特定的对象?

问题描述

我需要帮助完成我的 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 (将#修改为@)