算法---------路径总和
题目
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 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;}
算法---------路径总和相关推荐
- 113. 路径总和 (剑指 Offer 34. 二叉树中和为某一值的路径)(回溯算法)
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 示例 1: 输入:root = [ ...
- LeetCode-二叉树算法总结-层次遍历,路径总和等
版权声明:本文为博主原创文章,欢迎转载,但请注明出处,谢谢愿意分享知识的你~~ https://blog.csdn.net/qq_32690999/article/details/80484440 & ...
- 【数据结构与算法】之深入解析“路径总和II”的求解思路与算法示例
一.题目要求 给你二叉树的根节点 root 和一个整数目标和 targetSum,找出所有从根节点到叶子节点路径总和等于给定目标和的路径. 叶子节点是指没有子节点的节点. 示例 1: 输入:root ...
- 经典笔试题: 二叉树中和为某一值的路径(路径总和)
微信搜一搜:bigsai 大家都在关注的刷题.学习数据结构和算法宝藏项目 关注回复进群即可加入力扣打卡群,欢迎划水. 这两题是相似问题,循序渐进.也是力扣和剑指offer的经典题. 路径总和 题目描述 ...
- Python3解题:二叉树路径总和问题
Python3解题:二叉树路径总和问题 原题 https://leetcode-cn.com/problems/path-sum-ii/ 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和 ...
- 20200410:路径总和 Ⅰ Ⅱ(leetcode112 /113)
路径总和 题目 思路与算法 代码实现 题目 思路与算法 112题很容易,相当这是一个简单的DFS问题. 112题的递归边界条件为: Ⅰ root为null. Ⅱ root的左右子树为null. 113 ...
- LeetCode-笔记-112、路径总和
LeetCode-笔记-112.路径总和 112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节 ...
- leetcode 113. 路径总和 II
难度:中等 频次:60 题目: 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 解 ...
- Leetcode113路径总和2
题目 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5/ \4 ...
最新文章
- 希捷操作系统SeaOS工作原理
- python3.2安装tornado
- P3338 [ZJOI2014]力(FFT)
- 自己动手写TCC7901的GPIO驱动
- 用java设计节拍器_具有高速的Java节拍器
- C++(STL):08---vector元素访问
- LeetCode 1624. 两个相同字符之间的最长子字符串
- 特老的文章:三层应该怎么划分。不知大家还有用否
- 湖南女子学院 计算机,2019湖南女子学院专业排名
- jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等
- python调用大漠插件寻路_python调用大漠插件或天使插件
- 安卓App启动流程详解
- 哲理故事与管理之道 14 如何留住员工
- 如何从XP安装光盘中提取taskmgr.exe
- TestNG教程三:TestNG中的监听
- python足球联赛赛程_足球联赛赛程表工作表
- 怎么彻底处理windows下遇到的广告流氓软件例如:双11天喵、霸业传奇、贪玩蓝约等
- 一种隐私保护边云协同训练
- CTF学习经验分享(Web方向)
- 我的世界服务器自定义怪物怎么用,我的世界完全自定义怪物教程攻略
热门文章
- java vector内存结构_Java 数据结构
- sap 导出系统所有的单位_物流单条码识别系统
- AttributeError: module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘解决方法
- win10启动修复_win10下以安全模式启动电脑全攻略,装机、修复电脑故障必备
- 小米Max怎么刷入开发版获得root超级权限
- QT 建立信号和槽的联系(事件处理)
- 老旧的金融机构,是时候赶赶云计算的时髦了
- 物联网帝国——孙正义职业生涯最大的豪赌
- Maven 使用代理下载依赖
- 百度ueditor 拖文件或world 里面复制粘贴图片到编辑中 上传到第三方问题