一棵同时返回两件事的树!

问题描述

| 我对以下代码有一个奇怪的问题。我编写代码来搜索树。
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
。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...