添加方法不允许重复元素-二叉树(java)

7lrncoxx  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(359)

我已经编写了一个代码来递归地在二叉树中插入一个元素,但是我实现的这个代码不允许我插入重复的元素。问题是我不知道要在代码中修改什么以便插入相同的元素。例如,我插入8作为2岁的孩子,但我也希望插入8作为5岁的孩子,不同的父母但相同的孩子。这是我的代码:

public class BT<E> {
private Node<E> root;

private class Node<E>{
    private E data;
    private Node<E> left;
    private Node<E> right;

    public Node(E data){
        this.data = data;
    }
}

public boolean add(E child, E parent){
    Node<E> nc = new Node<>(child);
    if(isEmpty() && parent == null){
        root = nc;
        return true;
    }
    Node<E> np = searchNode(parent);
    Node<E> nce = searchNode(child);
    if(nce == null && np != null){
        if(np.left == null){
            np.left = nc;
            return true;
        }
        else if(np.right == null){
            np.right = nc;
            return true;
        }
    }
    return false;
}

private Node<E> searchNode(E data){
    return searchNode(data, root);
}

private Node<E> searchNode(E data, Node<E> p){
    if(p == null)
        return p;
    /*else if(p.data.equals(data))
        return p;*/
    else{
        Node<E> nl = searchNode(data, p.left);
        if(nl != null) return nl;
        return searchNode(data, p.right);
    }
}
``` `}` 
5kgi1eie

5kgi1eie1#

假设8已经作为2的子级插入,5也在树中。在这些行中:

Node<E> np = searchNode(parent);
    Node<E> nce = searchNode(child);
    if(nce == null && np != null){
``` `np` 将是5的节点,并且 `nce` 将是前8个的节点。 `nce` 不是 `null` 所以 `if` 语句永远不会执行。

相关问题