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