如何解决一棵同时返回两件事的树!
| 我对以下代码有一个奇怪的问题。我编写代码来搜索树。public TreeNode<City> search(City parent,TreeNode<City> t){
if (t.getCity().equals(parent)) {
System.out.println(\"ccc\");
return t;
}
else if (t.hasLeftChild()){
System.out.println(\"bbb\");
search(parent,t.getLeftChild());
}
else if(t.hasNextSibling()){
System.out.println(\"aaa\");
search(parent,t.getNextSibling());
}
return null;
}
奇怪的是:假设我的树中只有一个元素。然后,当我尝试向树中添加元素时,该方法正常工作。但是,当有两个元素(父母和孩子)并且我搜索孩子时,屏幕上显示的是“ ccc”,并且代码返回的内容为空!
我猜没有人遇到过这种愚蠢的情况。请帮我!
解决方法
除非在第一个搜索调用中满足第一个if(...),否则您将不希望返回ѭ1other以外的任何内容,因为两次调用
search
的返回值都将被丢弃。
,您应该添加return
,例如:
return search(...);
这就是递归背后的概念。您正在调用该函数并进行递归,但是您忽略了递归调用的结果!因为您忽略它,所以代码完成了if
语句的处理,并像您告诉的那样继续返回null
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。