java - 为什么这个方法总是返回 -1
问题描述
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);
}
解决方案
您忽略递归调用返回的值:
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;
return deleter(node,key);
}
else {
node=node.right;
return deleter(node,key);
}
return -1;
}
编辑:您应该在此代码中添加一些空检查,否则您可能会以NullPointerException
.
推荐阅读
- pine-script - 计算 pinescript 中 bar_index 之间的长度
- mysql - 如何使用 Golang MySQL 通过 cron 作业发送电子邮件?
- firebase - React Native Expo / Firebase 安全性
- python - Pandas 在 Windows 上操作数据帧时速度和内存使用不一致
- php - 如何使用沙特 ID 格式生成和验证随机 ID?
- vba - 如何监控多个文件夹?
- python - 如何在 Django 中更改 url
- python - 如何使列和行适合我估算的数字?
- javascript - 为什么在真实设备上查询 json 文件需要这么长时间,而在模拟器上是即时的?
- python - pip install upgrade 升级私有依赖失败