1358. 路径和
给定二叉树和求和,确定树是否具有根到叶路径,使得沿路径的所有值相加等于给定的总和。
样例
Example 1:
Input:tree = [5,4,8,11,#,13,4,7,2,#,#,#,#,#,1], sum = 22
Output: true
Explanation: Given the below binary tree
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.
Example 2:
Input:tree = [5,4,8], sum =18
Output: false
注意事项
叶子是没有孩子的节点。
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param root: the tree
* @param sum: the sum
* @return: if the tree has a root-to-leaf path
*/
public boolean pathSum(TreeNode root, int sum) {
if (root.left != null && root.right != null) {
return pathSum(root.left, sum - root.val) |
pathSum(root.right, sum - root.val);
} else if (root.left != null) {
return pathSum(root.left, sum - root.val);
} else if (root.right != null) {
return pathSum(root.right, sum - root.val);
} else {
// if (root.val == sum) return true;
return root.val == sum;
}
}
}