微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何从 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 举报,一经查实,本站将立刻删除。