題目描述:給定一個二叉樹和一個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定如下二叉樹,以及目標和 sum = 22
,
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
代碼:深度優先遍歷二叉樹,每深入一次,sum-根節點的值,當到達葉子節點的時候,判斷sum是否等於當前的節點值,如果等於,說明找到了,否則嘗試另外一條路徑
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
if(root==null) return false;
if(root.left==null && root.right==null) return sum-root.val==0;
return hasPathSum(root.left,sum-root.val)
||hasPathSum(root.right,sum-root.val);
}
}