1
问题 - >给定一棵二叉树和一个和,确定树是否具有根到叶的路径,以便沿路径加起来的所有值等于给定的总和。树 - 路径总和
我的解决方案 - >
public class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
if (root == null || sum == 0){
return false;
}
List<Integer> resultSet = new ArrayList<Integer>();
Integer result = root.val;
inorder(root, result, resultSet);
return resultSet.contains(sum);
}
public void inorder(TreeNode root, Integer result, List<Integer> resultSet){
if (root.left == null && root.right == null){
resultSet.add(result);
}
if (root.left != null) {
result += Integer.valueOf(root.left.val);
inorder(root.left, result, resultSet);
}
if (root.right != null) {
result += Integer.valueOf(root.right.val);
inorder(root.right, result, resultSet);
}
}
}
输出 - >
输入: [1,-2,-3,1,3,-2,空,-1] 输出:true 预计:假
我真的不知道我在哪里出错了。我尝试使用int和Integer类型选项来获得结果,但它不起作用。请帮忙。
嘿,这没有奏效。不,我没有在一个级别添加左侧和子节点值。我将通过递归调用深入一层,然后只添加结果。 输入: [7,0,NULL,-1,-6,空,1,NULL,NULL,-7] 输出: 假 预期: 真 所以,基本上我加入节点值只在不同的级别,然后检查我是否遇到了叶节点。我使用了类似的代码来查找树中的不同路径。所以认为这种方法也适用于这个问题,但是我会出错的地方。 – Afan
我发布了另一种解决此问题的方法。检查出。你也可以尝试打印出你的结果数组,看看它有什么不同的路径。这将有助于用您当前的方法调试问题 – pgiitu
是的,谢谢!后来我尝试了一种类似的方法,它工作。 – Afan