这题好像经常看到,练了前面的感觉还是很简单
112. 路径总和
1、题目描述
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。
叶子节点 是指没有子节点的节点。
2、解题思路
是用树的深度优先遍历算法
遇到叶子结点就判断路径和是不是等于目标值
3、编码实现
细节写在注释上
/**
* @param {TreeNode} root
* @param {number} targetSum
* @return {boolean}
*/
var hasPathSum = function(root, targetSum) {
// 深度优先遍历
if(!root) return false;
let flag = false;
const dfs = (node, curSum) => {
// 如果已经遇到叶子结点了,就表示是一条完整路径了
// 并且当前路径的和等于目标总和的话
if(!node.left && !node.right && (curSum === targetSum)) {
flag = true;
}
// 这里要判空一下,不然.val会报错
if(node.left) dfs(node.left, curSum + node.left.val);
if(node.right) dfs(node.right, curSum + node.right.val);
}
dfs(root, root.val)
return flag;
};
4、结果
写完啦~开心