当前位置: 首页 > article >正文

leetcode112:路径总和

给你二叉树的根节点 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
Related Topics

深度优先搜索
广度优先搜索
二叉树

方法一:递归

class Solution {
    public boolean hasPathSum(TreeNode root, int targetSum) {
        if (root == null) {
            return false;
        }

        if (root.left == null && root.right == null && root.val == targetSum) {
            return true;
        }

        return hasPathSum(root.left, targetSum - root.val) || (hasPathSum(root.right, targetSum - root.val));
    }

}

方法二:非递归(广度优先遍历)

用两个队列分别保存当前遍历的节点以及当前路径节点值的总和

class Solution {
    public boolean hasPathSum(TreeNode root, int targetSum) {
        if (root == null) {
            return false;
        }

        Queue<TreeNode> queue = new LinkedList<>();
        Queue<Integer> sum = new LinkedList<>();
        queue.offer(root);
        sum.offer(root.val);
        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();
            Integer temp = sum.poll();
            if (node.left == null && node.right == null && temp == targetSum) {
                return true;
            }

            if (node.left != null) {
                queue.offer(node.left);
                sum.offer(temp + node.left.val);
            }

            if (node.right != null) {
                queue.offer(node.right);
                sum.offer(temp + node.right.val);
            }
        }

        return false;
    }

}

http://www.kler.cn/a/4316.html

相关文章:

  • AAPM:基于大型语言模型代理的资产定价模型,夏普比率提高9.6%
  • 网络科技有限公司网络设计
  • Java中如何实现对象的深拷贝和浅拷贝?
  • 4G DTU赋能智能配电环网柜通信运维管理
  • 解决 Mac 系统上的 node-sass 问题
  • 【无标题】
  • wait讲解
  • 网络排查命令
  • JavaScript中链式调用大合集、应付面试够够的
  • 在服务器中使用Docker安装Tomcat、同时实现目录挂载、并且部署War包到服务器
  • VMware虚拟机与主机无法互传文件的解决办法
  • 记录一下,win11,单击zip文件后文件管理器闪退
  • 蓝桥杯C/C++VIP试题每日一练之Sine之舞
  • Java 学习
  • 系统分析——系统构建最重要的一环
  • 链表、双链表的插入和删除
  • PhotoZoom Pro2023免费版图形图像放大工具
  • Maven <repository> 配置小知识
  • Visual Genome数据集简介
  • SpringBoot 将PDF转成图片或Word
  • 08基于拉丁超立方法的风光场景生成与削减
  • Linux常用文件系统简述
  • 分享7个你可能还不知道的JS Web API,构建现代化网站轻松搞定
  • k8s证书过期的解决方案
  • 作业帮基于明道云开展的硬件业务数字化建设
  • 基于springboot实现医院信息管理系统【源码+论文】