Path Sum

原题链接Path Sum

判断二叉树中有没有一条从根节点到叶子节点的路径元素和为给定值

只需要遍历所有路径即可,需要注意的是对叶子节点的判断,需要满足左右两个节点都是空的条件时才为叶子节点

代码如下

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:bool hasPathSum(TreeNode* root, int sum) {return root && findPathSum(root, sum);  }
private:bool findPathSum(TreeNode* root, int sum){if(!root)   return false;sum -= root->val;/* 是叶子节点同时到达该叶子节点时,剩余和为0 */if(!root->left && !root->right && !sum) return true;return findPathSum(root->left, sum) || findPathSum(root->right, sum);}
};

Path Sum II

原题链接Path Sum II

返回所有路径上的元素值,路径要求仍然是总和为给定值

只需要将返回true和false改为记录路径值即可

代码如下

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vector<vector<int>> pathSum(TreeNode* root, int sum) {vector<vector<int>> res;vector<int> cur;findPathSum(root, sum, cur, res);return res;}
private:void findPathSum(TreeNode* root, int sum, vector<int>& cur, vector<vector<int>>& res){if(!root)   return;sum -= root->val;cur.emplace_back(root->val);if(!root->left && !root->right && !sum){res.emplace_back(cur);}else{findPathSum(root->left, sum, cur, res);findPathSum(root->right, sum, cur, res);}cur.pop_back();}
};

这两道题同样是利用递归,思路比较简单

每天一道LeetCode-----找到二叉树所有和为给定值的路径相关推荐

  1. 一天一道LeetCode(61-90)

    一天一道LeetCode(61-90) 文章目录 一天一道LeetCode(61-90) 61.旋转链表 62.不同路径 63.不同路径 II 64.最小路径和 65.有效数字(未解决) 66.加一 ...

  2. 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

  3. 【leetcode】二叉树与经典问题

    文章目录 笔记 leetcode [114. 二叉树展开为链表](https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list ...

  4. leetcode最小面积_每日一道 LeetCode (51):盛最多水的容器

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

  5. c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

  6. Leetcode 863.二叉树中所有距离为K的结点

    Time: 20190924 Type: Medium 题目描述 给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 K . 返回到目标结点 target 距离为 K ...

  7. 力扣(LeetCode)236. 二叉树的最近公共祖先(C语言)

    一.环境说明 本文是 LeetCode 236. 二叉树的最近公共祖先,使用c语言实现. 递归. 测试环境:Visual Studio 2019. 二.代码展示 精简代码: struct TreeNo ...

  8. 每日一道 LeetCode (16):求 x 的平方根

    每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...

  9. 每日一道leetcode(python)695. 岛屿的最大面积

    每日一道leetcode(python)695. 岛屿的最大面积 2021-08-21 给定一个包含了一些 0 和 1 的非空二维数组 grid .一个 岛屿 是由一些相邻的 1 (代表土地) 构成的 ...

最新文章

  1. ios 代码设置控件宽高比_用宽高比调整UIImage的大小?
  2. 汇编语言 第3版 王爽 检测点习题部分—答案及详细解析 检测点3.2
  3. 浪潮小机装oracle数据库,浪潮ERP系统oracle双机热备安装文档 | 浪潮888博客
  4. List、Set、Map的区别
  5. 搭建WAMP 环境时,解决Windows下输入localhost找不到网页的问题
  6. struct2利用相关的Aware接口
  7. Docker 容器CPU设置
  8. 每日温度—leetcode739
  9. 计算机学院 年度工作计划,计算机教研组年度工作计划
  10. keep怎么生成运动轨迹_【念叨叨】keep手环拔草记
  11. 我所理解的生活(韩寒)
  12. 从一条微博揭秘专黑大V名人的定向攻击
  13. JAVA期末考广东科技学院,我是叩丁狼广州Java老学员,我来说说自己的故事
  14. 使用Photoshop软件巧去影像的白点空洞
  15. Windows内存清理----其实是没必要的
  16. jQuery事件总结(二)
  17. hx711c语言程序,STM32写的HX711程序
  18. Java游戏碟中谍_MapRedcue的demo(协同过滤)
  19. windows下安装weblogic11g集群 BEA-149509报错
  20. 创业公司的软件研发规范

热门文章

  1. Java黑皮书课后题第10章:*10.5(显示素数因子)编写一个程序,提示用户输入一个正整数,然后以降序显示它的所有最小因子
  2. Java黑皮书课后题第5章:**5.45(统计:计算平均值和标准方差)在商务应用中……编写一个程序,提示用户输入10个数字,然后运用下面的公式,显示这些数字的平均值以及标准方差
  3. 用高精度方法计算n! ,并显示n!(阶乘)的值。
  4. java容器类4:Queue深入解读
  5. 学习windows编程 day6 之模拟记事本
  6. 算法训练 出现次数最多的整数
  7. 学用MVC4做网站五:5.1添加文章
  8. 【原创】民航业——软件项目管理经验点滴
  9. 网络字节序与主机字节序的转换[转]
  10. GridView滚动条