function hasPathSum( root ,  sum ) {
    // write code here
    if(!root) return false;
//     递归法
    return dfs(root,sum-root.val)
    
    function dfs(node,num){
//         如果计数为0,并且遇到叶子节点,返回true
        if(num==0 && !node.left && !node.right) return true;
        //遇到叶子节点,如果计数不为0,并且返回false 
        if(!node.left && !node.right) return false ;
//         否则,继续左右子节点分别递归
        if(node.left && dfs(node.left, num-node.left.val)) return true;
        if(node.right && dfs(node.right,num-node.right.val)) return true;
        return false;
    }
}