题目

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22,5/ \4   8/   / \11  13  4/  \      \7    2      1返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。

入口:

        TreeNode root = new TreeNode(5);root.left = new TreeNode(4);root.left.left = new TreeNode(11);root.left.left.left = new TreeNode(7);root.left.left.right = new TreeNode(2);root.right = new TreeNode(8);root.right.left = new TreeNode(13);root.right.right = new TreeNode(4);root.right.right.right = new TreeNode(1);boolean b = hasPathSum(root,22);System.out.println(b);

解决方法一:

    public boolean hasPathSum(TreeNode root, int sum) {if (root == null) {return false;}return hasPathRev(root,sum);}private boolean hasPathRev(TreeNode node, int sum) {if (node != null && node.left == null && node.right == null && node.val == sum){return true;}if (node == null) {return false;}boolean left = hasPathRev(node.left, sum - node.val);boolean right = hasPathRev(node.right, sum - node.val);return (left || right) ;}

解决方法二:

    public boolean hasPathSum2(TreeNode root, int sum) {if (root == null) {return false;}LinkedList<Pair<TreeNode,Integer>> stack = new LinkedList<>();stack.offer(new Pair<>(root,sum));while (!stack.isEmpty()){Pair<TreeNode, Integer> treeNodeIntegerPair = stack.pollLast();Integer value = treeNodeIntegerPair.getValue();TreeNode key = treeNodeIntegerPair.getKey();if (key.left == null && key.right == null && key.val == value) {return true;}if (key.left != null) {stack.offer(new Pair<>(key.left,value - key.val));}if (key.right != null) {stack.offer(new Pair<>(key.right,value - key.val));}}return false;}

算法---------路径总和相关推荐

  1. 113. 路径总和 (剑指 Offer 34. 二叉树中和为某一值的路径)(回溯算法)

    给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 示例 1: 输入:root = [ ...

  2. LeetCode-二叉树算法总结-层次遍历,路径总和等

    版权声明:本文为博主原创文章,欢迎转载,但请注明出处,谢谢愿意分享知识的你~~ https://blog.csdn.net/qq_32690999/article/details/80484440 & ...

  3. 【数据结构与算法】之深入解析“路径总和II”的求解思路与算法示例

    一.题目要求 给你二叉树的根节点 root 和一个整数目标和 targetSum,找出所有从根节点到叶子节点路径总和等于给定目标和的路径. 叶子节点是指没有子节点的节点. 示例 1: 输入:root ...

  4. 经典笔试题: 二叉树中和为某一值的路径(路径总和)

    微信搜一搜:bigsai 大家都在关注的刷题.学习数据结构和算法宝藏项目 关注回复进群即可加入力扣打卡群,欢迎划水. 这两题是相似问题,循序渐进.也是力扣和剑指offer的经典题. 路径总和 题目描述 ...

  5. Python3解题:二叉树路径总和问题

    Python3解题:二叉树路径总和问题 原题 https://leetcode-cn.com/problems/path-sum-ii/ 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和 ...

  6. 20200410:路径总和 Ⅰ Ⅱ(leetcode112 /113)

    路径总和 题目 思路与算法 代码实现 题目 思路与算法 112题很容易,相当这是一个简单的DFS问题. 112题的递归边界条件为: Ⅰ root为null. Ⅱ root的左右子树为null. 113 ...

  7. LeetCode-笔记-112、路径总和

    LeetCode-笔记-112.路径总和 112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节 ...

  8. leetcode 113. 路径总和 II

    难度:中等 频次:60 题目: 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 解 ...

  9. Leetcode113路径总和2

    题目 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5/ \4 ...

最新文章

  1. 希捷操作系统SeaOS工作原理
  2. python3.2安装tornado
  3. P3338 [ZJOI2014]力(FFT)
  4. 自己动手写TCC7901的GPIO驱动
  5. 用java设计节拍器_具有高速的Java节拍器
  6. C++(STL):08---vector元素访问
  7. LeetCode 1624. 两个相同字符之间的最长子字符串
  8. 特老的文章:三层应该怎么划分。不知大家还有用否
  9. 湖南女子学院 计算机,2019湖南女子学院专业排名
  10. jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等
  11. python调用大漠插件寻路_python调用大漠插件或天使插件
  12. 安卓App启动流程详解
  13. 哲理故事与管理之道 14 如何留住员工
  14. 如何从XP安装光盘中提取taskmgr.exe
  15. TestNG教程三:TestNG中的监听
  16. python足球联赛赛程_足球联赛赛程表工作表
  17. 怎么彻底处理windows下遇到的广告流氓软件例如:双11天喵、霸业传奇、贪玩蓝约等
  18. 一种隐私保护边云协同训练
  19. CTF学习经验分享(Web方向)
  20. 我的世界服务器自定义怪物怎么用,我的世界完全自定义怪物教程攻略

热门文章

  1. java vector内存结构_Java 数据结构
  2. sap 导出系统所有的单位_物流单条码识别系统
  3. AttributeError: module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘解决方法
  4. win10启动修复_win10下以安全模式启动电脑全攻略,装机、修复电脑故障必备
  5. 小米Max怎么刷入开发版获得root超级权限
  6. QT 建立信号和槽的联系(事件处理)
  7. 老旧的金融机构,是时候赶赶云计算的时髦了
  8. 物联网帝国——孙正义职业生涯最大的豪赌
  9. Maven 使用代理下载依赖
  10. 百度ueditor 拖文件或world 里面复制粘贴图片到编辑中 上传到第三方问题