我已经编写了一个代码来递归地在二叉树中插入一个元素,但是我实现的这个代码不允许我插入重复的元素。问题是我不知道要在代码中修改什么以便插入相同的元素。例如,我插入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);
}
}
``` `}`
1条答案
按热度按时间5kgi1eie1#
假设8已经作为2的子级插入,5也在树中。在这些行中: