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); };