如何在二叉树中搜索数字的总和?

时间:2015-03-16 19:09:11

标签: java binary-tree

我需要在BinaryTree中搜索任何数字组合,这些数字组合将为我提供我要搜索的总和。 例如,对于具有数字的树:9,1,6,3,2,5如果系统将接收18的总和,则将返回字符串“9,1,3,5”。我该怎么办呢。

组合需要从根目录开始,然后在Pathway&该方法需要在BackTracking递归中工作

我写的代码是:

public String path(int sum)
    {
        return path(sum, root);
    }
    private String path(int sum, Node t)
    {
        if (t == null)
            return "";

        sum = sum - t.getNumber();

        if (sum == 0)
            return t.getNumber() + ", ";


        return path(sum, t.getLeftSon()) + path(sum, t.getRightSon()); 

    }

1 个答案:

答案 0 :(得分:0)

您的递归实施真的接近您的需要,但有一些事情需要进行调整。
首先,递归实现需要两个工作:

  1. 基本案例,问题最终可以通过分而治之的方式实现
  2. 一般情况,用于将问题分成较小的部分,直到达到所需的基本情况

  3. 您遇到的问题是,您只是打印出最终节点,使您的总和评估为零,然后再递归。这是因为最后一次调用将递归回调用它的方法,其中总和高于零


    如果该树到达叶子并且未找到总和,则该子树中不存在该树。
    return "";

    其他如果在子树中找到
    return t.getNumber() + ", ";

    其他我们还没有达到总和,并且还有更多子节点。
    path(t.getleftSon()); path(t.getRightSon()); return t.getNumber() + ", "


    我没有在IDE中测试过这个确切的代码,但逻辑应该是正确的