当前位置:网站首页>二叉树求和路径问题解答与注记
二叉树求和路径问题解答与注记
2022-08-03 17:55:00 【小问号我们是朋友】
给定题干:
给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。
题目来源:
力扣(LeetCode)
1.示例
示例如下:
示例:
给定如下二叉树,以及目标和 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]2.解答与注记
代码如下(Java):
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int pathSum(TreeNode root, int sum) {
//如果根节点为空,则返回0,表示无求和路径
if(root == null) {
return 0;
}
//从根节点开始,递归遍历每个节点
int ret = rootSum(root, sum);
//将根节点的叶子节点作为一个新的路径起点开始递归遍历,直至整个二叉树遍历完毕
ret += pathSum(root.left, sum);
ret += pathSum(root.right, sum);
return ret;
}
public int rootSum(TreeNode root, int sum) {
//如果根节点为空,则返回0,表示无求和路径
if(root == null) {
return 0;
}
int ret = 0;
//获取当前节点的值与给定值做比较,相等则求和路径数加一
int val = root.val;
if(val == sum) {
ret++;
}
//如果当前值与给定值不同则递归遍历该节点的子节点,直至到达二叉树的最底部
ret += rootSum(root.left, sum - val);
ret += rootSum(root.right, sum - val);
return ret;
}
}总结
以上就是今天要讲的内容,本文介绍了二叉树求和路径的一种解法,在此备忘以供参考。
边栏推荐
- rhel8.3 系统下修改有线网卡配置信息实现联网
- Unable to start SinkRunner: { policy:org.apache.flume
- three.js简介
- yaml data format
- 云图说丨初识华为云微服务引擎CSE
- pydev debugger: warning: trying to add breakpoint to file that does not exist: /tmp/xxx
- Atomic Wallet已支持TRC20-USDT
- Dataworks中PyOdps里面pandas.read_sql()支持Odps吗?
- mysql命令
- “vite”和“vite预览”有什么区别?
猜你喜欢

opencv 直方图比较

企业如何选择低代码开发平台

cell delay和net delay

“vite”和“vite预览”有什么区别?

MySQL database account management and optimization

Share 14 JS functions you must know

Cyanine5.5 alkyne|Cy5.5 alkyne|1628790-37-3|Cy5.5-ALK

火热的印度工厂,带不动印度制造

A complete detailed tutorial on building intranet penetration ngrok (with pictures and truth)

JVS低代码移动端接入方案
随机推荐
精酿啤酒品牌,过把瘾就死?
JS string to GBK encoding ultra-reduced implementation
EasyNTS上云网关断电重启后设备离线是什么原因?
目标检测-YOLOv3理论讲解
技术干货|如何将 Pulsar 数据快速且无缝接入 Apache Doris
WPF 实现柱形统计图
深度学习跟踪DLT (deep learning tracker)
腾讯电竞的蓝翔梦
程序员如何分分钟搞垮一个项目?
【用户运营】用这4个最佳客户服务策略,减少客户流失率
Oracle备份的几种方式
Trie思想及模板
Discuz新闻资讯GBK模板
【美丽天天秒】链动2+1模式开发
NLP范式新变化:Prompt
分享 14 个你必须知道的 JS 函数
JVM参数设置
mysql之的执行计划
TiFlash 计算层概览
Map和Set