112.路径总和

2020-04-03
路径总和
                                              
 
题解:
思路1: 递归
/**
 * 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 === null) return false; // 递归到叶子节点 如果当前节点为null 说明这一条路径不对
  // 如果左右侧都没有子节点了 且当前节点的值等于剩余的sum 则当前节点是正确的路径
  if (!root.left && !root.right && root.val === sum) return true; 
  // 遍历某个节点 若左侧有值,将sum减去当前节点的值作为下一次递归的sum 一直遍历下去 直到最后的节点
  // 同样的 右侧有值同样的遍历下去 且 由于作用域的关系 sum 在每次递归中的值是互不影响的
  return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val);
};

 

posted @ 2020-04-03 13:25  蓝小胖纸  阅读(136)  评论(0编辑  收藏  举报