我正在尝试编写一个 boolean 递归方法,将值插入到二叉搜索树中。如果该值尚不存在,则返回 true 并插入该值;如果已存在相同的值并且列表未更改,则返回 false。我认为这在大多数情况下都有效,但当多个值已经存在时,它无法重复返回 false。例如,如果树已经包含 3 9 6 7 并且我尝试插入 3,它会返回 false,因为这是第一次。但是当我尝试插入 9 6 或 7 时,它总是返回 true,但它不应该返回 true,因为这些值已经存在。
public boolean insert(int value) {
Node travel;
travel=insert(value,root);
if (travel==null)
return false;
root=travel;
return true;
}
private Node insert(int value, Node travel) {
if (travel==null) {
travel=new Node(value);
return travel;
}
if (value>travel.data) {
travel.right=(insert(value,travel.right));
return travel;
}
if(value<travel.data) {
travel.left=(insert(value,travel.left));
return travel;
}
return null;
}
最佳答案
像这样改变它:
private Node insert(int value, Node current) {
if(current.data == value){
return current;
}else if(current.left != null && current.left.data > value){
return insert(value,current.left);
}else if(current.right != null && current.right.data < value){
return insert(value,current.right);
}else{
if(current.data > value){
current.left = new Node(value);
}else{
current.right = new Node(value);
}
return null;
}
}
这将插入具有给定值的节点(如果该节点尚不存在)并返回 null。否则,将返回一个节点,表明该节点已经存在。
关于java - 二叉搜索树中的递归方法-java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26654096/