题目:
题目截图:
解题步骤:
1.深度优先遍历二叉树,在叶子节点处,判断当前路径的节点值的和是否等于目标值,是就返回true
2.遍历结束,如果没有匹配,就返回false
代码:
/**
* 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) return false;
let res = false;
const dfs = (n, s) => {
// console.log(n.val, s);
if (!n.left && !n.right && s === sum) res = true;
if (n.left) dfs(n.left, s + n.left.val);
if (n.right) dfs(n.right, s + n.right.val);
};
dfs(root, root.val);
return res;
};
时间复杂度分析:
时间复杂度是O(n),n是二叉树的节点个数
空间复杂度分析:
空间复杂度是O(n)
怎么样,是不是很简单,你学会了吗 ?
如果这篇文章能够帮助到您,希望您不要吝惜点赞👍👍和收藏💖💖,您的支持是我继续努力的动力 💪💪 !!!