LeetCode题解:112. 路径总和,递归,JavaScript,详细注释

原题链接:

112. 路径总和

解题思路:

  1. 如果求根节点到叶子节点的路径上的节点值之和,假设共有3个节点,那么写成计算式是val1 + val2 + val3 = sum
  2. 那么将计算式转换就可以得到val3 = sum - val1 - val2
  3. 也就是说,问题可以从求和转换为,每向下查找一层节点,就将求和减去当前节点的值,最后只要判断叶子节点的值val3,是否和最后sum - val1 - val2相等即可
  4. 需要特别判断的是:二叉树为空,此时无值,返回false
/**
 * @param {TreeNode} root
 * @param {number} targetSum
 * @return {boolean}
 */
var hasPathSum = function(root, targetSum) {
  // 如果二叉树为空
  if (!root) return false
  // 如果当前节点没有子节点,它就是叶子节点,只要判断root.val === targetSum
  if (!root.left && !root.right) return root.val === targetSum

  // 每一层节点都将targetSum减去root.val,最后一层只要对比叶子节点的值是否等于targetSum
  // 最后将结果逐层向上返回
  return hasPathSum(root.left, targetSum - root.val) || hasPathSum(root.right, targetSum - root.val)
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容