我需要在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());
}
答案 0 :(得分:0)
您的递归实施真的接近您的需要,但有一些事情需要进行调整。
首先,递归实现需要两个工作:
您遇到的问题是,您只是打印出最终节点,使您的总和评估为零,然后再递归。这是因为最后一次调用将递归回调用它的方法,其中总和高于零。
如果该树到达叶子并且未找到总和,则该子树中不存在该树。
return "";
其他如果在子树中找到 。
return t.getNumber() + ", ";
其他我们还没有达到总和,并且还有更多子节点。
path(t.getleftSon());
path(t.getRightSon());
return t.getNumber() + ", "
我没有在IDE中测试过这个确切的代码,但逻辑应该是正确的