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