* Path Sum III【任意 起始点—终点 路径和】

437. 路径总和 III(Path Sum III) 给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。 示例: root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 ... 阅读详情

PROBLEM:

You are given a binary tree in which each node contains an integer value.

Find the number of paths that sum to a given value.

The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).

The tree has no more than 1,000 nodes and the values are in the range -1,000,000 to 1,000,000.

Example:

root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8

      10
     /  \
    5   -3
   / \    \
  3   2   11
 / \   \
3  -2   1

Return 3. The paths that sum to 8 are:

1.  5 -> 3
2.  5 -> 2 -> 1
3. -3 -> 11

SOLVE:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int pathSum(TreeNode* root, int sum) {
        return pathSum1(root,sum,sum);
    }
private:
    int pathSum1(TreeNode* root, int sum, int total) {
        if(!root)
            return 0;
        else if(sum==root->val)
            return 1+pathSum2(root->left,0)+pathSum2(root->right,0)+pathSum1(root->left,total,total)+pathSum1(root->right,total,total);
        else
            return pathSum2(root->left,sum-root->val)+pathSum2(root->right,sum-root->val)+pathSum1(root->left,total,total)+pathSum1(root->right,total,total);
    }
    int pathSum2(TreeNode* root, int sum) {
        if(!root)
            return 0;
        else if(sum==root->val)
            return 1+pathSum2(root->left,0)+pathSum2(root->right,0);
        else
            return pathSum2(root->left,sum-root->val)+pathSum2(root->right,sum-root->val);
    }
};

注意:这题反反复复测试了好多次才做对......错误有:同一条轮径重复算入,或者漏掉了一些路径。

最终思路是:

1、创建两个版本的函数(Public函数是Leetcode的默认调用函数,其实可以去掉),pathSum1()会分裂出一条新路径,而pathSum2()只能在当前路径继续计算下去。(之前一种错误是只用了pathSum1()函数,导致以第n层为起始点的路径被算了n-1次)

2、当sum与当前节点值相等时,除了返回 1 还要计算后续路径和为 0 的可能数。

大佬的答案:

class Solution {
public:
    int pathSum(TreeNode* root, int sum) {
        if(!root) return 0;
        return sumUp(root, 0, sum) + pathSum(root->left, sum) + pathSum(root->right, sum);
    }
private:
    int sumUp(TreeNode* root, int pre, int& sum){
        if(!root) return 0;
        int current = pre + root->val;
        return (current == sum) + sumUp(root->left, current, sum) + sumUp(root->right, current, sum);
    }
};

大佬的程序确实简洁......

最短路径的matlab程序 这是图论里面求从一点出发遍历所有点的最短路径程序 立即下载

相关推荐

所有点对最短路径

NULL 博文链接:https://lisajoy512.iteye.com/blog/1238779

Path Sum III(C++路径总和 III)

Path Sum III(C++路径总和 III)

coolsunxu的博客 296

深空探测处理软件USGS-ISIS的下载安装

深空探测处理软件USGS-ISIS下载安装教程

qq_31721595的博客 3310

寻路问题--如何找到一条从起点坐标到终点坐标的路径?

一,寻路问题介绍 正如组合问题与动态规划的联系之应用提到的从起点(0,0)到终点(X,Y)一共有多少种走法。与之相似的另一个问题是如何找到从(0,0)到(X,Y)的路径? 首先对问题建模。使用一个矩阵(二维数组)的下标 表示 各个点的坐标。矩阵元素只取 0 或者 1,0 表示此坐标是一个可达的正常顶点;而 1 则表示这是一个不可达的障碍顶点。比如 如下矩阵: {0,0,1,1,0}{1,0,...

weixin_30885111的博客 1130

Android音频混音器AudioMixer实战:从多路输入到设备播放的完整流程解析

本文深入解析了Android平台上音频混音器AudioMixer的完整工作流程,涵盖从多路音频输入、轨道创建与配置、AudioBufferProvider数据源接入,到核心混音处理与最终设备播放的全过程。文章重点探讨了如何高效管理音频数据流、配置音量与重采样参数,并提供了缓冲区管理与性能优化的实战技巧,帮助开发者构建稳定、低延迟的音频应用。

l3m4n的博客 342

Debian下Rust环境极速安装指南:国内镜像+避坑配置(附清华/中科大源对比)

本文详细介绍了在Debian系统上快速安装和配置Rust开发环境的完整指南。针对国内网络环境,重点对比评测了清华大学、中国科学技术大学等主流镜像源,提供了详细的安装配置步骤、Cargo优化技巧以及常见问题排查方案,帮助开发者显著提升依赖下载和编译效率。

s8t9u0v1w的博客 1161

437. Path Sum III*

437. Path Sum III* https://leetcode.com/problems/path-sum-iii/description/ 题目描述 You are given a binary tree in which each node contains an integer value. Find the number of paths that sum to a given v...

珍妮的选择的博客 4345

LoRa模块选型指南:正点原子ATK-LORA-01与SX1278芯片深度评测(含实测距离/功耗数据)

本文深度评测了正点原子ATK-LORA-01与SX1278芯片的性能表现,通过实测数据展示其在复杂环境中的通信距离与功耗表现。特别适合智慧农业、工业监测等物联网应用场景,提供详细的配置指南和优化技巧,帮助开发者实现高效、低功耗的LoRa通信解决方案。

weixin_29191081的博客 290

leetcode 112. Path Sum 、 113. Path Sum II 、437. Path Sum III

112. Path Sum 自己的一个错误写法: class Solution { public: bool hasPathSum(TreeNode* root, int sum) { if(root == NULL) return false; int value = 0; return hasP...

weixin_30849403的博客 114

新版本大疆智图4.5 永久许可摄影测量建模软件

大疆智图支持常见格式的成果输出,包括 TIFF 正射影像和高程模型、LAS 格式点云,以及 B3DM、OSGB、OBJ 等六种常用格式的三维模型,还包括 DXF 和 SHP 等格式的等高线。大疆智图 DJI Terra是领先的三维重建软件,提供先进的技术和简单的操作,一站式解决方案,从航线规划到数据的获取,以及模型重建、数据分析等都提供独一无二的支持,优化项目工程,提供自动化优势,获得更有效智能的决策和行动,最终用户可以获得理想的结果,减轻工作压力,提高作业效率。质量报告和剖面查看功能有助于分析点云质量。

qq_62821232的博客 6892

【代码审计】RuoYi定时任务漏洞:从SQL注入到RCE的攻防演变

本文深入剖析了RuoYi框架定时任务模块从早期版本无校验到引入黑白名单机制,再到被组合利用实现RCE的完整漏洞演变过程。文章详细分析了SQL注入与定时任务功能结合导致的远程代码执行漏洞,并总结了代码审计与安全开发的核心要点,为开发者提供了重要的安全参考。

yellow的专栏 699

[Leetcode] Path Sum I,II,III

112. Path Sum I: 点击打开链接 /** * Definition for a binary tree node. //判断是否有这样的路径满足和为sum * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(i

offerkkl的博客 435

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

zhengzaifeidelushang的博客 3290

【leetcode】【easy】437. Path Sum III

437.Path Sum III You are given a binary tree in which each node contains an integer value. Find the number of paths that sum to a given value. The path does not need to start or end at the root or...

lemonade13的博客 153

搭建问答系统

数据描述 import docx import jieba from gensim.models import Word2Vec import os import numpy as np import pickle as pk import warnings from copy import deepcopy warnings.filterwarnings("ignore") from mu...

微信号:RunsenLiu 1840

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Path Sum III

利用两个递归,寻找一棵树中累加和等于指定值的路径。

不积跬步无以至千里 672

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[leetcode] Path Sum III

Path Sum III 问题描述:给定一颗二叉树,计算有多少条路径的sum等于一个target。路径的定义为从起点和终点之间依次都满足是后者是前者的孩子。如下图所示: 问题分析: 针对每个节点,我们可以记录从跟节点到该节点所经历的所有value -> paths。 然后我们计算该点和前面所有点的value和等于sum的个数。 同样的我们递归计算该点的左孩子,右孩子。 最终的结果等于c...

nwpuxhld 252

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

[leetcode] 437. Path Sum III 解题报告

题目链接: https://leetcode.com/problems/path-sum-iii/ You are given a binary tree in which each node contains an integer value. Find the number of paths that sum to a given value. The path does

小榕流光的专栏 1647

437. Path Sum III

437. 路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。 示例: root = [10,5,-3,3,2,null,11,3,-2,null,1],...

GGGGITFKBJG的主页 122

[LeetCode] 437. Path Sum III

原题链接

Ber03的博客 231

LeetCode 437. Path Sum III

https://leetcode.com/problems/path-sum-iii/ 本题和之前的Path Sum有些类似,但需要注意的是,之前的路径必须是从根节点到叶子节点的路径和,而本题中任意路径都需要统计,所以我们在递归的每一层中,向下递归时需要考虑包含当前节点和不包含当前节点的情况。代码如下: /** * Definition for a binary tree node....

当赤道留住雪花 159

437. Path Sum III**【力扣】

题意理解 计算二叉树中等于固定数的路径个数。 问题分析 用递归 左中右三个部分考虑。 难点1:从任一个结点开始计算路径,怎么做? 难点2:必须从上往下,终点不一定是叶子,怎么破? 解法:还原到树的基本形态,根 + 左子树 + 右子树。从任一结点开始计算,看成是从根、左子树和右子树三者出发;从上往下,遍历的顺序就是先根再左右子树,终点不一定是叶子就是说增加参数保存当前的路径和,满足和的...

xiexie1357的专栏 238
上一篇: Binary Watch【二进制手表时间转换为普通时间】
下一篇: Find All Numbers Disappeared in an Array【找到数组中未出现的元素】
Sim0Hayha
博客等级 码龄10年 9粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值