给定一个二叉树 root 和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径。

1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点

2.叶子节点是指没有子节点的节点

3.路径只能从父节点到子节点,不能从子节点到父节点

4.总节点数目为n

 public boolean hasPathSum (TreeNode root, int sum) {
 
        // write code here
 
        //前序遍历时动手脚即可
 
        if (root == null) return false;
 
        // 判断左右子树同时为空的同时,刨除val值的sum是否为0,如果成立说明刚好在叶子结点找到和为指定值的路径
 
        if (root.left == null && root.right == null && sum - root.val == 0) {
 
            return true;
 
        }
 
       return hasPathSum(root.left, sum - root.val) ||
 
        hasPathSum(root.right, sum - root.val);
 
    }