当前位置:网站首页>【LeetCode】112. Path sum
【LeetCode】112. Path sum
2022-08-03 08:40:00 【Crispy~】
题目
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum .判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum .如果存在,返回 true ;否则,返回 false .
叶子节点 是指没有子节点的节点.
示例 1:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
输出:true
解释:等于目标和的根节点到叶节点路径如上图所示.
示例 2:

输入:root = [1,2,3], targetSum = 5
输出:false
解释:树中存在两条根节点到叶子节点的路径:
(1 --> 2): 和为 3
(1 --> 3): 和为 4
不存在 sum = 5 的根节点到叶子节点的路径.
示例 3:
输入:root = [], targetSum = 0
输出:false
解释:由于树是空的,所以不存在根节点到叶子节点的路径.
提示:
树中节点的数目在范围 [0, 5000] 内
-1000 <= Node.val <= 1000
-1000 <= targetSum <= 1000
题解
使用递归
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */
class Solution {
public:
bool hasPathSum(TreeNode* root, int targetSum) {
if(root==nullptr)
return false;
if(!root->left && !root->right)
return targetSum == root->val;
return hasPathSum(root->left,targetSum - root->val) ||
hasPathSum(root->right,targetSum - root->val);
}
};
迭代,广度优先遍历
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */
class Solution {
public:
bool hasPathSum(TreeNode* root, int targetSum) {
if(root==nullptr)
return false;
queue<TreeNode*> myqueue;
myqueue.emplace(root);
while(!myqueue.empty())
{
TreeNode* node = myqueue.front();
myqueue.pop();
if(!node->left && !node->right && targetSum==node->val)
return true;
if(node->left)
{
node->left->val += node->val;
myqueue.emplace(node->left);
}
if(node->right)
{
node->right->val += node->val;
myqueue.emplace(node->right);
}
}
return false;
}
};
边栏推荐
猜你喜欢
随机推荐
0day_Topsec上网行为管理RCE
Guava-字符串工具
Using pipreqs export requirements needed for the project. TXT (rather than the whole environment)
swiper分类菜单双层效果demo(整理)
scala reduce、reduceLeft 、reduceRight 、fold、foldLeft 、foldRight
HCIP练习03(重发布)
进程信息
The Transformer, BERT, GPT paper intensive reading notes
NFT到底有哪些实际用途?
Mysql如何对两张表的相同字段,同时查询两张数据表
qt使用mysql数据库(自学笔记)
浅析什么是伪类和伪元素?伪类和伪元素的区别解析
“==”和equals的区别
greenplum role /user 管理
dflow入门3——dpdispatcher插件
Redisson实现分布式锁
分析型数据库性能测试总结
Guava的Service
Transformer、BERT、GPT 论文精读笔记
阿里云·短信发送









