我为二叉搜索树编写了一个 void
的插入方法。我必须更改该方法,以便它返回一个 boolean 值,但我很困惑,因为我的插入辅助方法返回一个节点。
有没有办法编写一些其他返回 boolean 值的辅助方法?如果不是,我将如何更改我的方法以返回 boolean
?
这是我的方法:
public void insert(E s)
{
root = insert(s, root);
root.setParent(findParent(root.getData()));
}
private Node<E> insert(E s, Node<E> T)
{
//easiest case, empty tree, create new tree
if(T == null)
{
T = new Node<E>(s);
}
//s is greater than T, insert on right subtree
else if(s.compareTo(T.getData()) > 0)
{
T.setRight(insert(s, T.getRight()));
}
//s is less than T, insert on left subtree
else if (s.compareTo(T.getData()) < 0)
{
T.setLeft(insert(s,T.getLeft()));
}
else
{
System.out.println("Item already present.");
}
return T;
}//Close insert
最佳答案
我假设如果插入成功,您应该返回 true
,否则返回 false
?将您的第一个 insert
函数更改为如下所示:
public boolean insert(E s)
{
try {
root = insert(s, root);
root.setParent(findParent(root.getData()));
return true;
} catch (Exception e) {
return false;
}
}
并更改辅助函数,以便如果该项目已存在,它会抛出异常(以便主插入函数捕获并触发 false
返回)。
private Node<E> insert(E s, Node<E> T) throws Exception {
...
else {
System.out.println("Item already present.");
throw new Exception("Item already present.");
}
return T;
}
或者(正如图坦卡门建议的那样)在插入不成功的情况下从辅助方法返回 null
,因此您可以:
public boolean insert(E s)
{
root = insert(s, root);
if (root == null) {
return false;
}
root.setParent(findParent(root.getData()));
return true;
}
private Node<E> insert(E s, Node<E> T) {
...
else {
System.out.println("Item already present.");
return null;
}
return T;
}
关于java - 二叉搜索树改变insert方法返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15260992/