当前位置: 首页 > 知识库问答 >
问题:

树,值是否等于和(布尔输出)

宇文飞翮
2023-03-14

问题是:

我们将“根到叶路径”定义为树中的任意节点序列,从根节点开始向下延伸到叶。该路径的“根到叶路径和”是沿该路径的所有节点(包括根)的和。定义一个空树,使其不包含根到叶的路径(因此其和为零)。定义一个具有一个节点的树,使其根到叶的路径仅由根组成(因此其总和是根的值)。给定一个二叉树和一个值“sum”,如果该树有一些根到叶的路径,使得沿路径的所有值相加等于“sum”,则返回true。如果找不到这样的路径,则返回false。

我有:

public  boolean BTpathsum(BinNode root, int sum)
{
        if(root==null)
{
    return false;
}
else if(root.value() == sum){
 return true;
}
else{
    return BTpathsum(root.left, sum - root.value()) || BTpathsum(root.right, sum - root.value());
}
}

为什么这对我来说是不正确的?

共有1个答案

窦志新
2023-03-14

这你去

public boolean BTpathsum(BinNode root, int sum)
{
    if(root!=null)
    {
        if(root.value() == sum)
            return true;
        else
            return BTpathsum(root.left, sum - root.value()) || BTpathsum(root.right, sum - root.value());
    }
    else if(sum == 0)
        return true;
    else
        return false;
}

你没有检查确认树不是空的。如果它的高度为零,总和为0,则需要返回true。

 类似资料:
  • 问题内容: 以下代码 使用V1.7.0_15 编译时没有错误,并且在运行时显示“ false”。但是,Eclipse Juno抱怨“操作数类型对象和布尔值不兼容”。 显然,javac自动装箱原始boolean ,然后通过对象相等(yielding)进行比较和自动装箱,而Eclipse拒绝执行自动装箱。 根据Java语言规范,哪种行为正确?我应该在哪里提交错误? 注意: 如果将的类型更改为,则事情将

  • 问题内容: 因此,我听说如果将2个字符串与==进行比较,则只有它们都引用相同的对象/实例时,我才会返回true。那是琴弦。布尔呢? 问题答案: ==是否检查布尔值是否完全相等?-Java 这取决于您是在谈论s(对象包装,请注意大写)还是s(原始,请注意小写)。如果您在谈论s(对象包装器),就像处理所有对象一样,请检查 身份 ,而不是对 等 。如果您在谈论s(基元),它将检查是否相等。 所以: 但

  • 我用以下方式解决了一个问题: 它起作用了。问题是所有这些if语句都让我厌烦,我也无法想象它们是世界上最快的东西。我想这样解决它: 问题是bool8是一个保留类型,而不是一个真正的类型,所以方法1已经过时了。然而,方法2不能正确工作。我怀疑原因与它的第一行有关。这 我的问题是,是否有任何方法可以以更干净、更并行的方式重写原始代码? 谢谢,

  • 检查给定的参数是否是一个原生的布尔值。 使用 typeof 来检查一个值是否为一个布尔值。 const isBoolean = val => typeof val === 'boolean'; isBoolean(null); // false isBoolean(false); // true

  • 我需要一个可以在junit 方法中调用的方法,该方法比较两个布尔值以检查它们是否相等,并返回一个布尔值。例如,类似这样的事情: 如果不相等,则返回false,如果相等,则返回true。我已经检查了布尔类,但是唯一接近的是< code>Boolean.compare(),它返回一个int值,我不能使用这个值。

  • 问题内容: 如何检查布尔值是否为null?因此,如果我知道“ hideInNav”为空。如何阻止它进一步执行?像下面这样的东西似乎不起作用,但是为什么呢? 问题答案: 只能是或因为它是原始数据类型(+ 变量的默认值为)。如果要使用值,则可以改用类。布尔是一种引用类型,这就是您可以分配给布尔“变量”的原因。例: