java - 为什么返回语句没有执行?
问题描述
我正在尝试在二叉树中实现 find 方法。当方法需要返回一个值时会出现问题,但它似乎没有执行该语句,即使在执行的同一分号中有其他行。
public String find(Node currentNode, String value)
{
if(isEmpty())
{
return null;
}
else
{
if(currentNode.getData().compareToIgnoreCase(value) == 0)
{
System.out.println("current -> "+currentNode.getData()); //showing
return currentNode.getData(); //not executing
}
if(value.compareToIgnoreCase(currentNode.getData()) < 0)
{
find(currentNode.getLeft(), value);
}
else if(value.compareToIgnoreCase(currentNode.getData()) > 0)
{
find(currentNode.getRight(), value);
}
}
return null; //always executing
}
我期望“a”但返回null。
解决方案
当您执行该行时
find(currentNode.getLeft(), value);
您的语句return currentNode.getData();
正在执行,但您忽略了递归调用返回的内容。(getRight()
语句类似。)然后 if/else 语句完成,return null
底部的 at 执行。这就是为什么你总是得到null
。
返回递归调用返回的任何内容,以便返回的值正确传播回原始调用,例如:
return find(currentNode.getLeft(), value);
推荐阅读
- python-3.x - 在循环内更改值但只更改一次
- html - 使用 jinja 在 html 中渲染 TextAreaField
- react-native-reanimated - useAnimatedStyle 返回的样式常量导致应用停止工作
- reactjs - 如何使我的 div 标签禁用无法点击
- python - 允许用户取消长时间运行的 API 调用
- google-chrome - Google Chrome 浏览器:以编程方式(外部)跳转到特定的打开选项卡
- python - 如何使用 Python 执行 Shell 命令以恢复数据库 postgres?
- javascript - 使用 JSON 数据在前端导出带有页眉/页脚信息的报告
- flutter - Flutter:来自 wordpress 内容描述的图像未使用最大宽度或高度或裁剪
- postgresql - 如何永久更改 AWS RDS postgreSQL 数据库时区