原文:112. 路径总和(leetcode 解题) - 每天一个JavaScript小知识@Js中文网 · 码农进阶题库

原文地址:https://www.javascriptc.com/interview-tips/zh_cn/leetcode/leetcode-javascript-solution-0112/

题目:

难度:Easy

相关话题:深度优先搜索

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。

说明: 叶子节点是指没有子节点的节点。

示例: 给定如下二叉树,以及目标和 sum = 22

              5
             / \
            4  8
           /   / \
          11 13  4
         /  \      \
        7    2      1

返回 true , 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2

/**
 * @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
 * @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} sum
 * @return {boolean}
 */
var hasPathSum = function(root, sum) {
  if(!root)return false
  let s=sum-root.val
  if(s===0 && !root.left && !root.right)return true
  return hasPathSum(root.left,s) || hasPathSum(root.right,s)
};