LeetCode[面试题04.12]求和路径

难度:Medium

题目:

给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。


示例:

给定如下二叉树,以及目标和 sum = 22

复制代码
              5
             / \
            4   8
           /   / \
          11  13  4
         /  \    / \
        7    2  5   1

返回:

复制代码
3
解释:和为 22 的路径有:[5,4,11,2], [5,8,4,5], [4,11,7]

提示:

  • 节点总数 <= 10000

Related Topics

  • 深度优先搜索
  • 二叉树

重点!!!解题思路

明确题目要求:路径不一定非得从根节点开始,可以从树中任意节点开始。

明确解题思路:正常使用dfs即可,当sum值减到0就说明有一条路线,然后枚举树中的每一 个节点即可

源码:

java 复制代码
    class Solution {
        public int pathSum(TreeNode root, int sum) {
            if (root == null) return 0;
            int l = pathSum(root.left, sum);
            int r = pathSum(root.right, sum);
            return l + r + getSum(root, sum);
        }

        public int getSum(TreeNode root, int sum) {
            if (root == null) return 0;
            sum -= root.val;
            return (sum == 0 ? 1 : 0) + getSum(root.left, sum) + getSum(root.right, sum);
        }
    }

运行结果:

如果您还有什么疑问或解答有问题,可在下方评论,我会及时回复。

系列持续更新中,点个订阅吧,喜欢练习算法那就点个攒吧

相关推荐
Black蜡笔小新3 小时前
自动化AI算法训练服务器DLTM助力医学影像分析进入AI智能分析新时代
人工智能·算法·自动化
手写码匠4 小时前
深入解析大模型架构之争:全能通用模型 vs 领域专精模型
人工智能·深度学习·算法·aigc
浅念-5 小时前
LeetCode 回溯算法题——综合练习
数据结构·c++·算法·leetcode·职场和发展·深度优先·dfs
列星随旋5 小时前
线段树和树状数组的学习
学习·算法
圣保罗的大教堂6 小时前
leetcode 61. 旋转链表 中等
leetcode
全糖可乐气泡水7 小时前
Codex适配国产信创环境安装部署与技术适配全解析
开发语言·git·python·算法·百度
h_a_o777oah7 小时前
状态机+划分型 DP :深度解析K-划分问题下 DP 状态的转移逻辑(洛谷P2679 P2331 附C++代码)
c++·算法·动态规划·acm·状态机dp·划分型dp·滚动数组优化
05候补工程师7 小时前
从算法理想向工程现实的跨越:SLAM 核心架构、思维误区与 Nav2 实战避坑指南
人工智能·算法·安全·架构·机器人
手写码匠9 小时前
Android 17 适配实战指南:新特性解读、隐私变更与迁移全攻略
人工智能·深度学习·算法·aigc