把两件东西放在一起的树!

时间:2011-05-25 16:15:43

标签: tree return-value add

我对以下代码有一个奇怪的问题。我编写代码来搜索树。

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”,代码返回的内容为null !!!

我想没有人会遇到过那种愚蠢的情况。请帮帮我!

2 个答案:

答案 0 :(得分:1)

除非在第一次搜索调用中满足第一个if(...),否则您不希望返回null以外的任何内容,作为两次调用{{1}的返回值被丢弃了。

答案 1 :(得分:1)

您应该添加return,例如:

return search(...);

这就是递归背后的概念;你正在调用函数并递归,但你忽略了递归调用的结果!因为你忽略它,所以代码完成了if语句并继续返回null,就像你告诉它一样。