題目描述
給定一個二叉樹和一個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定如下二叉樹,以及目標和 sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
返回 true, 因爲存在目標和爲 22 的根節點到葉子節點的路徑 5->4->11->2。
思路
先序遍歷,沒到達一個節點,用目標-節點值,當到葉子節點進行判斷是sum否爲0。
代碼
class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
if (root == null) return false;
sum -= root.val;
// 葉子節點判斷和
if (root.left == null && root.right == null) {
return sum == 0;
}
return hasPathSum(root.left, sum) || hasPathSum(root.right, sum);
}
}