问题是:
我们定义了一个" root-to-leaf路径"从根节点开始并向下前进到叶子的树中的任何节点序列。 " root-to-leaf路径总和"该路径是该路径上所有节点(包括根)的总和。定义一个空树以不包含根到叶路径(因此其总和为零)。定义一个树,其中一个节点具有仅由根组成的根到叶路径(因此其总和是根的值)。给定二叉树和值" sum",如果树具有一些根到叶路径,则返回true,使得沿路径的所有值相加等于" sum"。如果找不到这样的路径,则返回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());
}
}
为什么这对我不正确?
答案 0 :(得分:0)
你去吧
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。