当前位置:网站首页>二叉树求和路径问题解答与注记
二叉树求和路径问题解答与注记
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;
}
}
总结
以上就是今天要讲的内容,本文介绍了二叉树求和路径的一种解法,在此备忘以供参考。
边栏推荐
- China Hashpower Conference Ascension Kunpeng Ecological Forum was held; Kuaishou established an independent to B business department…
- 软件测试<进阶篇-->测试分类>
- 【Deliberately practice the view of the back tube】deliberately practice
- 广告电商、泰山众筹、链动2+1,这3个模式到底怎么样?
- 链表中倒数第k个结点
- websocket Handshake failed due to invalid Upgrade header
- Gson 学习笔记
- 你想知道的 Watch App 开发
- “vite”和“vite预览”有什么区别?
- TiFlash 计算层概览
猜你喜欢
计网知识点
es6新增-Generator(异步编程的解决方案2)
A complete detailed tutorial on building intranet penetration ngrok (with pictures and truth)
opencv 直方图比较
Weekly recommended short video: In order to fill the gap of learning resources, the author specially wrote a book?
“vite”和“vite预览”有什么区别?
如何避免无效的沟通
关于 Intel 在 micro-vm 快速启动的探索及实例演示 | 第 36-38 期
Execution plan of mysql
Execution plan of mysql
随机推荐
火热的印度工厂,带不动印度制造
three.js简介
【美丽天天秒】链动2+1模式开发
WPF implements column chart
腾讯电竞的蓝翔梦
websocket Handshake failed due to invalid Upgrade header
yaml data format
使用o.execute_sql 查询很很很小的表, 要7/8秒钟, 这个怎么解决
链表中倒数第k个结点
这是Facebook母公司 关于元宇宙的80万亿美元豪赌
TiFlash 计算层概览
分享 14 个你必须知道的 JS 函数
【Deliberately practice the view of the back tube】deliberately practice
软件测试<进阶篇-->测试分类>
Digital IC Handwriting - MCMM, WNS and TNS
什么是鉴权?一篇文章带你了解postman的多种方式
云图说丨初识华为云微服务引擎CSE
oracle 分组合并字段,每组行显示
微信小程序分享功能
DataWorks 标准版怎样实现SQL代码的复用?