我为void
的二叉搜索树编写了一个插入方法。我必须更改该方法,以便返回boolean
,但我很困惑,因为我的插入辅助方法返回Node
。
有没有办法编写一些其他帮助方法来返回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
答案 0 :(得分:1)
我假设如果插入成功,你应该返回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
或(正如Tutankhamen建议的那样)在插入失败的情况下从帮助方法返回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;
}
,所以你有:
{{1}}