【发布时间】:2019-04-27 08:24:32
【问题描述】:
private int deleter(BSTNode node, int key) {
if(node.key==key){
if(node.right==null && node.left==null){
node=null;
return 0;
}
}
else if(key<node.key){
node=node.left;
deleter(node,key);
}
else {
node=node.right;
deleter(node,key);
}
return -1;
}
为什么这个方法总是返回-1。找到精确节点时应该返回0吗?它再次进入这个块然后返回 -1
else {
node=node.right;
deleter(node,key);
}
【问题讨论】:
-
那是因为你的递归代码中唯一的返回语句是-1。而不是仅仅调用删除器,只需在前面添加return语句并删除最后一个
return -1;语句。
标签: java if-statement recursion return return-value