地址:​​https://leetcode-cn.com/problems/path-sum/​

java版

/**
* 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;
}

//如果没有左右节点,那么直接用sum-该节点值,跟0对比
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);
}
}

php 版

/**
* Definition for a binary tree node.
* class TreeNode {
* public $val = null;
* public $left = null;
* public $right = null;
* function __construct($value) { $this->val = $value; }
* }
*/
class Solution {

/**
* @param TreeNode $root
* @param Integer $sum
* @return Boolean
*/
function hasPathSum($root, $sum) {
if(empty($root)){
return false;
}
//如果没有左右节点,那么就是叶子节点
if(!isset($root->left) && !isset($root->right)){
return $sum - $root->val == 0;
}

return $this->hasPathSum($root->left,$sum-$root->val) || $this->hasPathSum($root->right,$sum - $root->val);
}
}

go版本

/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func hasPathSum(root *TreeNode, sum int) bool {

if root == nil {
return false
}

if root.Left == nil && root.Right == nil {
return sum == root.Val
}

return hasPathSum(root.Left,sum - root.Val) || hasPathSum(root.Right,sum- root.Val)
}