当前位置:网站首页>面试题 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;
}
边栏推荐
- 三星Galaxy Watch5产品图片流出 非Pro表款亦有蓝宝石加持
- 【Web3 系列开发教程——创建你的第一个 NFT(8)】如何开发一个成功的 NFT 项目 | NFT 社区建设技巧
- FFmpeg 从mp4上提取H264的nalu
- Mysql index, transaction and storage engine
- 如何学习性能测试?
- 搭载2.8K 120Hz OLED华硕好屏 无畏Pro15 2022锐龙版屏开得胜
- VoLTE基础自学系列 | 3GPP规范解读之Rx接口(上集)
- 机器人控制器编程实践指导书旧版-实践三 直流电机(执行器)
- JSON serialization and deserialization using Jackson API in Scala
- 网络层总结(未完待续)
猜你喜欢

【HMS core】【FAQ】Account Kit、push Kit典型问题合集1

Toronto Research Chemicals农药检测丨甲硫威

直播回顾|多云时代,如何建设企业级云管理平台?(附建设指南下载)

Toronto Research Chemicals萜烯分析丨反式植物醇

机器人控制器编程实践指导书旧版-实践五 数字舵机(执行器)
![[Image segmentation] Image segmentation based on cellular automata with matlab code](/img/f7/2fd7dfc0bc59bf3492b304c69bd4c7.png)
[Image segmentation] Image segmentation based on cellular automata with matlab code

【数据存储精讲】整型和浮点型有什么区别?为什么会精度丢失?

Making Pre-trained Language Models Better Few-Shot Learners

Toronto Research Chemicals农药检测丨Naled-d6

网络层总结(未完待续)
随机推荐
6-11 Preorder output leaf nodes (15 points)
Toronto Research Chemicals霉菌毒素分析丨T2 四醇
IoU、GIoU、DIoU、CIoU四种损失函数总结
Selenium - 如何使用隐式、显示、强制元素等待?
Toronto Research Chemicals 对乙酰氧基苯乙酮说明书
容器化 | 在 S3 实现定时备份
兼具外观、性能、屏幕!华硕灵耀X 14火热抢购中
requires ‘angle‘ attribute to be a multiple of 45
flex使用align-content无效
企业即时通讯是什么?可以应用在哪些场景?
哈夫曼实现文件压缩解压缩(c语言)
【图像分割】基于元胞自动机实现图像分割附matlab代码
AVFrame related api memory management
NPDP|传统行业产品经理如何进行能力提升?
多线程与高并发(五)—— 源码解析 ReentrantLock
Toronto Research Chemicals 双(乙酰丙酮)铂(II)
【HMS core】【FAQ】Analytics Kit、Push Kit典型问题合集3
背景视频铺满盒子
Interface test advanced interface script using -apipost (pre/post execution script)
定时器循环展示数组