【问题描述】[中等]

【解答思路】

1. 递归


时间复杂度:O(N) 空间复杂度:O(H)

从根节点开始,每当遇到一个节点的时候,从目标值里扣除节点值,一直到叶子节点判断目标值是不是被扣完。

class Solution {public boolean hasPathSum(TreeNode root, int sum) {if (root == null) {return false;}if (root.left == null && root.right == null) {// return sum-root.val==0;return sum == root.val;}return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val);}
}

声明一个变量记录已经经过的节点的值之和,每经过一个节点就加上这个节点的值,在叶子节点判断变量值是否为目标值。

 public boolean hasPathSum(TreeNode root, int sum) {return  helper(root,0,sum);}public boolean helper(TreeNode root,int cur,int sum){if(root==null)return false;cur=cur+root.val;if(root.left==null&&root.right==null){return cur==sum;}else{return helper(root.left,cur,sum)|| helper(root.right,cur,sum);}}。
2. 广度优先搜索




时间复杂度:O(N) 空间复杂度:O(N)

class Solution {public boolean hasPathSum(TreeNode root, int sum) {if (root == null) {return false;}Queue<TreeNode> queNode = new LinkedList<TreeNode>();Queue<Integer> queVal = new LinkedList<Integer>();queNode.offer(root);queVal.offer(root.val);while (!queNode.isEmpty()) {TreeNode now = queNode.poll();int temp = queVal.poll();if (now.left == null && now.right == null) {if (temp == sum) {return true;}continue;}if (now.left != null) {queNode.offer(now.left);queVal.offer(now.left.val + temp);}if (now.right != null) {queNode.offer(now.right);queVal.offer(now.right.val + temp);}}return false;}
}

【总结】

1.注意事项

2.数的递归

树的递归题目是非常有套路可循的,因为树有两个分支,所以在递归里也有两个分支,一般是通过 递归 A(||,&&)递归 B 来实现分支的。只要明白了这一点,递归函数就不会很难设计。

3.巧妙使用了两个队列 一个队列保存遍历节点 另一节点保存和

参考链接:https://leetcode-cn.com/problems/path-sum/solution/lu-jing-zong-he-by-leetcode-solution/

参考链接:https://leetcode-cn.com/problems/path-sum/solution/lu-jing-zong-he-jie-da-by-commonheart/

[Leetcode][第112题][JAVA][路径总和][递归][队列]相关推荐

  1. [Leetcode][第40题][JAVA][数组总和2][回溯][剪枝]

    [问题描述][中等] [解答思路] 1. 减法 import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Ar ...

  2. [Leetcode][第39题][JAVA][组合总和][回溯][dfs][剪枝]

    [问题描述][中等] [解答思路] 1. 回溯 import java.util.ArrayDeque; import java.util.ArrayList; import java.util.De ...

  3. [Leetcode][第337题][JAVA][打家劫舍3][递归][动态规划]

    [问题描述][中等] [解答思路] 1. 动态规划 第 1 步:状态定义 dp[node][j] :这里 node 表示一个结点,以 node 为根结点的树,并且规定了 node 是否偷取能够获得的最 ...

  4. [Leetcode][第78题][JAVA][子集][位运算][回溯]

    [问题描述][中等] [解答思路] 1. 位运算 复杂度 class Solution {List<Integer> t = new ArrayList<Integer>(); ...

  5. [Leetcode][第79题][JAVA][单词搜索][DFS][回溯]

    [问题描述][中等] [解答思路] 1. DFS繁琐版本 class Solution {public boolean exist(char[][] board, String word) {bool ...

  6. [Leetcode][第889题][JAVA][根据前序和后序遍历构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] copyOfRange class Solution {public TreeNode constructFromPrePost(int[] pre, int[] ...

  7. [Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) { ...

  8. [Leetcode][第111题][JAVA][BFS][二叉树的最小深度][BFS][递归]

    [问题描述][简单] [解答思路] 1. 递归 自下而上 基本情况/结束条件 : 叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点 当 root 节点左右孩子都为空时,返回 1 当 roo ...

  9. [Leetcode][第104题][JAVA][二叉树的最大深度][递归][BFS]

    [问题描述][简单] [解答思路] 1. 递归 终止条件/基本情况 root ==null 递推关系 max(l,r)+1 时间复杂度:O(N) 空间复杂度:O(height) class Solut ...

最新文章

  1. 使用mysql_MySQL 的安装与使用(一)
  2. 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
  3. Win7 PPTP/L2TP设置详细图解教程
  4. 生产环境碰到系统CPU飙高和频繁GC,你要怎么排查?
  5. 【ASP.NET Web API教程】5.5 ASP.NET Web API中的HTTP Cookie
  6. 关于“豪猪”,你理解的透彻吗?【Hystrix是个什么玩意儿】
  7. oracle别名用双引号,Oracle别名大小写 -----解决方案
  8. linux 下opencv安装教程,linux 下 opencv安装
  9. LeetCode 390. 消除游戏(类似约瑟夫环,找映射规律)
  10. threejs 用 ExtrudeGeometry 画管线
  11. idea在java文件中查找_Java开发工具IntelliJ IDEA使用源代码系列教程(四):在文件中搜索目标...
  12. c语言 静态断言,C断言/静态断言
  13. LeetCode 647. Palindromic Substrings
  14. chrome下方的copeascURL(cmd) 复制的内容,在windows的cmd中不可用的原因
  15. 计算机操作系统知识整理-计算机操作系统概述(计算机操作系统入门指南)
  16. 可以免费领取卡巴斯基激活码的活动
  17. latex 表格居中
  18. 山东网通/电信用户DNS设置
  19. token 自动续期的方案
  20. 4.19 数椟科技远程面试 + 粉笔

热门文章

  1. 【干货分享】前端面试知识点锦集03(JavaScript篇)——附答案
  2. 背后的故事之 - 快乐的Lambda表达式(二)
  3. springMVC使用注解方式进行页面跳转
  4. 【Linux操作系统分析】设备驱动处理流程
  5. asp.net中获得客户端的IP地址
  6. bit不是java基本类型吗_Java bit / byte 基本数据类型
  7. 本题要求实现一个用选择法对整数数组进行简单排序的函数。_通俗易懂讲 Python 算法:快速排序...
  8. SqlServer自定义聚合函数
  9. echarts我常用的参数总结
  10. typescript 接口 interface 的理解