1
给出一个二叉树,其中每个节点都包含一个整数值。 查找总和给定值的路径数。 路径不需要在根或叶子处开始或结束,但它必须向下(仅从父节点行进到子节点)。为什么这个算法不适用于树中的路径和?
我写这件事:
编辑:固定算法中,但未能上一个测试用例。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int pathSum(TreeNode root, int sum) {
if(root == null) return 0;
return helper(root, sum) + pathSum(root.left, sum) + pathSum(root.right, sum);
}
public int helper(TreeNode node, int sum){
if(node == null) return 0;
if(node.val == sum) return 1;
return helper(node.left, sum - node.val) + helper(node.right, sum - node.val);
}
}
我试着修复它,我写了一个新的算法。现在为什么不是那个人工作?它适用于上一个案例,但现在又失败了另一个案例? – sssszzzzzzssszzz
@SavageLol答案与原始问题有关,因此您应该提出另一个问题,而不是完全覆盖它。无论哪种方式,因为它已经在那里:你的代码没有考虑到可能存在的路径,使得一个是另一个的子序列,并且两者的总和等于所需的值。例如:考虑'sum = 8'的路径'8 - > 3 - > -3'。你的代码在第一个节点返回1,但实际上有两条总和为8的路径('8'和'8 - > 3 - > -3')。 – Paul