我正在尝试使用递归来为BST编写插入方法。
public void insert(DictEntry data) throws BSTException {
if (find(data.getPosition()) == data){
throw new BSTException();
}
else {
if (current == null){
root.setRoot(data);
}
else {
while(current != null){
if (data.getPosition().compareTo(root.getRoot().getPosition()) < 0){
current = current.getLeft();
}
else{
if (data.getPosition().compareTo(root.getRoot().getPosition()) > 0){
current = current.getRight();
}
else
;
}
insert(data);
}
}
}
}
但我不知道由于某种原因测试用例总是失败。 有人可以帮我解决一下吗?
答案 0 :(得分:0)
此代码存在一些问题:
if (current == null){
的基本情况时,您在根处插入?您应该在“当前”处插入,因为这是您发现为空且与订单匹配的子树其他问题:
public void insert(DictEntry data, BSTNode node)
类似insert(data, root)
,然后递归调用insert(data, node.getLeft()
或insert(data, node.getRight()