主要思想:根据题可知是由根节点到叶子节点,根左右及根右左都可,那么我采用前序遍历(根左右)来寻找路径,当sum减去当前节点值以及子节点均为null时返回真值,而当root为null时返回假值,那么只要递归前序遍历树,返回左右子树真假值的‘或’结果即可。

 * function TreeNode(x) {
 *   this.val = x;
 *   this.left = null;
 *   this.right = null;
 * }
 */

/**
  * 
  * @param root TreeNode类 
  * @param sum int整型 
  * @return bool布尔型
  */
function hasPathSum( root ,  sum ) {
    if(root==null) return false;
    sum=sum-root.val;
    if(sum==0&&root.left==null&&root.right==null) return true;
    
    return hasPathSum(root.left,sum)||hasPathSum(root.right,sum);
}
module.exports = {
    hasPathSum : hasPathSum
};