当前位置:网站首页>面试题 04.12. 求和路径-dfs+辅助数组法
面试题 04.12. 求和路径-dfs+辅助数组法
2022-08-10 18:00:00 【Mr Gao】
面试题 04.12. 求和路径
给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。
示例:
给定如下二叉树,以及目标和 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]
此题解题代码如下,还是不错的一个题目,建议不要直接使用暴力解法:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */
int count;
void dfs(struct TreeNode*root,int sum,int val,int *r,int h){
if(root){
r[h]=root->val;
if(root->left){
dfs(root->left,sum,root->val+val,r,h+1);
}
if(root->right){
dfs(root->right,sum,root->val+val,r,h+1);
}
int eval=root->val+val;
if(eval==sum){
count++;
}
for(int i=0;i<h;i++){
eval=eval-r[i];
if(eval==sum){
count++;
}
}
}
}
int pathSum(struct TreeNode* root, int sum){
int *r=(int *)malloc(sizeof(int)*1000);
count=0;
dfs(root,sum,0,r,0);
return count;
}
边栏推荐
- 「Web应用架构」轮询,SSE 和WebSocket,如何选择合适的?
- 120Hz OLED拒绝“烧屏”!华硕无双全能轻薄本
- 【FAQ】【Push Kit】 华为怎么设置角标
- c语言进阶篇:柔性数组
- 验算移位距离和假设的通用性
- 6-11 先序输出叶结点(15分)
- pip install fatal error C1083 cannot open include file "io.h" No such file or directory
- Thoughts on Technology Sharing
- Product Description丨MobPush fast integration method on Android side
- Scala中使用 Jackson API 进行JSON序列化和反序列化
猜你喜欢
验算移位距离和假设的通用性
set和map使用讲解
期货开户前要第一时间确认手续费
Toronto Research Chemicals霉菌毒素分析丨伏马菌素B2
Kong自定义插件初体验
Toronto Research Chemicals萜烯分析丨反式植物醇
WebRTC source code analysis nack detailed explanation
Making Pre-trained Language Models Better Few-Shot Learners
HarmonyOS自动化测试框架—Hypium
Product Description丨MobPush fast integration method on Android side
随机推荐
【HMS core】【FAQ】Analytics Kit、Push Kit典型问题合集3
Toronto Research Chemicals 对乙酰氧基苯乙酮说明书
Selenium - 如何操作下拉框、弹出框、滚动条?
【FAQ】HarmonyOS ETS如何给组件设置边框
Allegro软件Shape菜单下的每个命令的含义
go语言的性能基准测试、性能优化测试和性能调优
const的自己理解
Toronto Research Chemicals霉菌毒素分析丨T2 四醇
eager模式和graph模式 Tensorflow
set和map使用讲解
容器化 | 在 S3 实现定时备份
[JMeter]Beanshell解析Json格式的接口响应数据
6月各手机银行活跃用户较快增长,创半年新高
oracle11g体系结构
微服务架构-实现技术之六大基础组件:服务通信+事件驱动+负载均衡+服务路由+API网关+配置管理
【燃】是时候展现真正的实力了!一文看懂2022华为开发者大赛技术亮点
【接入指南 之 直接接入】手把手教你快速上手接入HONOR Connect平台(下)
FFmpeg花屏解决(修改源码,丢弃不完整帧)
Selenium - 如何操作鼠标进行悬停、右击、双击、拖拽?
迪文发布新款2K高清DGUS智能屏