- Notifications
You must be signed in to change notification settings - Fork45
Open
Description
仰望星空的人,不应该被嘲笑
题目描述
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树,以及目标和sum=22,5/ \48//\11134/ \ \721返回true,因为存在目标和为22的根节点到叶子节点的路径5->4->11->2。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/path-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
dfs
,对于非叶子节点,我们直接减去相应权值,到达了叶子节点,我们判断一下即可,如果满足条件,返回true
。
/** * 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} */varhasPathSum=function(root,sum){if(!root)returnfalse;letres=false;letdfs=(sum,root)=>{// 非叶子节点,就减去权值sum-=root.val;// 到达叶子节点,进行判断if(!root.left&&!root.right){if(sum===0){res=true;return;}}// 先遍历左子树,再遍历右子树root.left&&dfs(sum,root.left);root.right&&dfs(sum,root.right);}dfs(sum,root);returnres;};
最后
文章产出不易,还望各位小伙伴们支持一波!
往期精选:
leetcode-javascript:LeetCode 力扣的 JavaScript 解题仓库,前端刷题路线(思维导图)
小伙伴们可以在Issues中提交自己的解题代码,🤝 欢迎Contributing,可打卡刷题,Give a ⭐️ if this project helped you!
访问超逸の博客,方便小伙伴阅读玩耍~
学如逆水行舟,不进则退