33 - 路径总和
Last updated
Last updated
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)
};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;
};var hasPathSum = function (root, sum) {
if (!root) {
return false
}
let stack = [root]
while (stack.length) {
let cur = stack.pop()
if (!cur.left && !cur.right && cur.val === sum) {
return true
}
if (cur.left) {
cur.left.val += cur.val // 直接加入到子节点之上
stack.push(cur.left)
}
if (cur.right) {
cur.right.val += cur.val
stack.push(cur.right)
}
}
return false
};