437.路徑總和
- 路徑總和 III
難度簡單472
給定一個二叉樹,它的每個結點都存放着一個整數值。
找出路徑和等於給定數值的路徑總數。
路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的(只能從父節點到子節點)。
二叉樹不超過1000個節點,且節點數值範圍是 [-1000000,1000000] 的整數。
示例:
root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 10 / \ 5 -3 / \ \ 3 2 11 / \ \ 3 -2 1 返回 3。和等於 8 的路徑有: 1. 5 -> 3 2. 5 -> 2 -> 1 3. -3 -> 11
題中給出的條件不從root開始 葉子節點結尾。那麼需要分成3部分去查找。
1.從頭結點查找 2.頭結點的左子節點查找 3.頭結點的右子節點查找
public int pathSum(TreeNode root, int sum) {
if(root == null ){
return 0;
}
int result = pathCount(root,sum);
int a = pathSum(root.left,sum);
int b = pathSum(root.right,sum);
return result+a+b;
}
private int pathCount(TreeNode root,int sum){
if(root == null){
return 0;
}
sum -= root.val;
int result = sum == 0 ? 1 : 0;
return result+pathCount(root.left,sum)+pathCount(root.right,sum);
}