【问题标题】:Add method doesn't allow repeating elements - Binary Tree (Java)添加方法不允许重复元素 - 二叉树(Java)
【发布时间】:2021-04-02 14:57:37
【问题描述】:

我已经编写了一个代码来递归地在二叉树中插入一个元素,但是我实现的这个代码不允许我插入一个重复的元素。问题是我不知道要在代码中修改什么,所以我可以插入相同的元素。例如,我插入 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);
    }
}

}

【问题讨论】:

    标签: java recursion data-structures binary-tree


    【解决方案1】:

    假设 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 语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      相关资源
      最近更新 更多