当前位置:网站首页>【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;
}
};
边栏推荐
猜你喜欢
HCIA实验(07)
FusionAccess软件架构、FusionAccess必须配置的四个组件、桌面发放流程、虚拟机组类型、桌面组类型
flutter 应用 抓包
AI mid-stage sequence labeling task: three data set construction process records
Transformer、BERT、GPT 论文精读笔记
Arduino框架下对ESP32 NVS非易失性存储解读以及应用示例
Redis cluster concept and construction
英文语法-状语从句
二进制日志过期时间设置expire_logs_days
数仓4.0(二)------ 业务数据采集平台
随机推荐
scala reduce、reduceLeft 、reduceRight 、fold、foldLeft 、foldRight
dflow入门4——recurse&reuse&conditional
MySQL数据库————数据库与vs的连接
LAN技术-2免费ARP
牛客 - 鼠标的天选(字符串哈希)
timestamp
WPS EXCEL 筛选指定长度的文本 内容 字符串
Gauva的ListenableFuture
[Kaggle combat] Prediction of the number of survivors of the Titanic (from zero to submission to Kaggle to model saving and restoration)
Charles抓包工具学习记录
LINGO 18.0 software installation package download and installation tutorial
0day_Topsec上网行为管理RCE
Qt 下拉复选框(MultiSelectComboBox)(一) 实现下拉框多选,搜索下拉框内容
面渣逆袭:MySQL六十六问,两万字+五十图详解
行业洞察 | 如何更好的实现与虚拟人的互动体验?
Arduino框架下对ESP32 NVS非易失性存储解读以及应用示例
greenplum role /user 管理
unity的game界面里有canvas的线框?如何隐藏掉?
【论文笔记】基于动作空间划分的MAXQ自动分层方法
Exception: Dataset not found.解决办法