var hasPathSum = function (root, sum) {
if (!root) {
return false
}
sum -= root.val
if (!root.left && !root.right) {
return sum === 0
}
return hasPathSum(root.left, sum) || hasPathSum(root.right, sum)
};
执行用时 :100 ms, 在所有 JavaScript 提交中击败了66.08%的用户
内存消耗 :37.7 MB, 在所有 JavaScript 提交中击败了5.17%的用户
<<<<<<< HEAD:33 - 路径总和.md
迭代
原本的写法是这样的:
var hasPathSum = function (root, sum) {
if (!root) {
return false
}
let stack = [root]
while (stack.length > 0) {
let cur = stack.pop()
sum -= cur.val
if (!cur.left && !cur.right) {
if (sum === 0) {
return true
} else {
sum += cur.val // 如果不是0,那么就把减过的值放回去
}
}
if (cur.right) {
stack.push(cur.right)
}
if (cur.left) {
stack.push(cur.left)
}
}
return false;
};