Java 二叉树中是否存在从根到叶的路径

Java 二叉树中是否存在从根到叶的路径,java,tree,binary-tree,Java,Tree,Binary Tree,我写了一个小代码,当给定一个二叉树,一个数字,当我们从根到叶累加节点值时,如果它等于这个数字,则返回true,否则返回false boolean pathExists(BinaryTreeNode<Integer> root,int sum,int value) { if(root==null) return false; sum=sum+root.data; if(sum==value && root.left==null &

我写了一个小代码,当给定一个二叉树,一个数字,当我们从根到叶累加节点值时,如果它等于这个数字,则返回true,否则返回false

boolean pathExists(BinaryTreeNode<Integer> root,int sum,int value) {
    if(root==null)
        return false;
    sum=sum+root.data;
    if(sum==value && root.left==null && root.right==null) {
        return true;
    }
    boolean found=pathExists(root.left, sum,value);
    if(found)
        return true;
    boolean check=pathExists(root.right, sum, value);
    if(check)
        return true;
    sum=sum-root.data;
    return false;
}
布尔路径存在(二进制树节点根、整数和、整数值){
if(root==null)
返回false;
sum=sum+root.data;
if(sum==value&&root.left==null&&root.right==null){
返回true;
}
boolean found=pathExists(root.left,sum,value);
如果(找到)
返回true;
布尔检查=路径存在(root.right、sum、value);
如果(检查)
返回true;
sum=sum-root.data;
返回false;
}
我认为它适用于所有测试用例,但如果它不适用于任何测试用例,请让我知道。我的主要疑问是,有没有更好的版本可以用我所做的逻辑来编写代码,比如让代码看起来更好?比如,不是让2个变量被找到,而是检查,然后通过把它们放在if语句中返回true,是否可以像我们在递归问题中通常看到的那样把它们放在一行中?像这样的-

返回路径exists(root.left,sum,value)|路径exists(root.right,sum,value)


显然,上述说法行不通,但有没有这样的方法?我很抱歉问这样一个基本的问题,但我一直很难处理递归,它在树中增加了很多。

我建议编写一个单元测试,按程序生成几组 1) 所有正确的回答(确保没有错误的否定)
2) 所有错误响应(确保无误报)

3) 您在编写函数时可能遇到的任何附带情况(尽管考虑到它的简单性,它可能实际上没有任何附带情况)。

它不是适合此用途的站点。如果您的实际代码没有问题,我们将无法帮助您。如果我能给你一个建议,为你的方法的每个可能的用例编写单元测试。它应该能回答你的问题。@davidxxx兄弟,stackoverflow不是建议我编写的代码的更好替代方案的合适站点吗?这是真正的意思吗…?这是正确的-代码审查网站是你可以要求对工作代码的反馈的地方。