【剑指offer】二叉树中和为某一值的路径,C++实现
原创文章,转载请注明出处!
1.题目
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径由结点和有向边组成,从根结点到叶节点。
// 二叉树结点的定义
struct BinaryTreeNode
{
int val;
BinaryTreeNode *left;
BinaryTreeNode *right;
}
举例:

二叉树中有两条和为22的路径:{10,5,7}和{10,12}
2.思路
本题使用前序遍历的方式访问节点,使用二维向量result存储全部路径,使用一维向量tmp存储当前路径。遍历二叉树的过程:按前序遍历顺序访问每一个节点。访问每个结点时,将结点添加到路径向量tmp中。如果当前结点是叶子结点,则判断当前路径是否是符合条件的路径,符合条件的路径存入到二维向量result;如果当前结点不是叶子结点,则递归当前节点的左右子节点。举例:

3.代码
class Solution {
public:
vector<vector<int> > FindPath(TreeNode* root,int expectNumber)
{
if(root) dfsFind(root, expectNumber);
return allRes;
}
void dfsFind(TreeNode * node , int target)
{
tmp.push_back(node->val);
if(!node->left && !node->right)
{
if(target - node->val == 0)
allRes.push_back(tmp);
}
else
{
if(node->left) dfsFind(node->left, target - node->val);
if(node->right) dfsFind(node->right, target - node->val);
}
if(!tmp.empty())
tmp.pop_back();
}
private:
vector<vector<int> >allRes;
vector<int> tmp;
};
4.测试用例
- 空指针
- 二叉树中没有符合条件的路径
- 二叉树中有一条符合条件的路径
- 二叉树中有多条符合条件的路径
【剑指offer】二叉树中和为某一值的路径,C++实现的更多相关文章
- 剑指offer 二叉树中和为某一个值的路径
剑指offer 牛客网 二叉树中和为某一个值的路径 # -*- coding: utf-8 -*- """ Created on Tue Apr 9 15:53:58 2 ...
- 剑指Offer 二叉树中和为某一值的路径(dfs)
题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 思路: 递归,然后深搜,因为题目定义的, ...
- 剑指Offer——二叉树中和为某一值的路径
题目描述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 分析: 先序遍历二叉树,找到二叉树中结点值的和 ...
- 用java刷剑指offer(二叉树中和为某一值的路径)
题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大 ...
- 用js刷剑指offer(二叉树中和为某一值的路径)
题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大 ...
- 剑指offer--31.二叉树中和为某一值的路径
深度优先搜索 --------------------------------------------------------------------------------------------- ...
- 剑指Offer-24.二叉树中和为某一值的路径(C++/Java)
题目: 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大的 ...
- 剑指offer-二叉树中和为某一值的路径
题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 解题思路 利用前序遍历的思想,定义FindP ...
- 剑指offer-二叉树中和为某一值的路径24
题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大 ...
- 剑指offer-二叉树中和为某一值的路径-python
题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大 ...
随机推荐
- Swift学习笔记 - URL编码encode与解码decode
使用swift有一段时间了,api的变换造成了很多困扰,下面是关于url编码和解码问题的解决方案 在Swift中URL编码 在Swift中URL编码用到的是String的方法 func addingP ...
- 在使用Vue.js中使用axios库时,遇到415错误(不支持的媒体类型(Unsupported media type))
知识点:vue2.0中使用axios进行(put,post请求时),遇到415错误 解决办法:在axios的第三个参数config中,设置请求头信息'Content-Type': 'applicati ...
- kylin入门到实战:入门
版权申明:转载请注明出处.文章来源:http://bigdataer.net/?p=292 排版乱?请移步原文获得更好的阅读体验 1.概述 kylin是一款开源的分布式数据分析工具,基于hadoop之 ...
- mysql悲观锁以及乐观锁总结和实践
悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中, 将数据处于锁定状态.悲观锁的实现,往往 ...
- c语言的tcp和udp客户端和服务器
都是最简单的用来记忆. this is my 的git地址:https://github.com/yanjinyun/cLanguageTcpUdp tcp最简单的服务器: int main(int ...
- css 权威指南笔记
部分属性选择: 选择class 属性中包含warning的元素 [class~="warning"]{font-weight:bold} 子串匹配属性选择器: 在现代浏览器中得到支 ...
- HDU - 5988The 2016 ACM-ICPC Asia Qingdao Regional ContestG - Coding Contest 最小费用流
很巧妙的建边方式 题意:有n个区域,每个区域有一些人数si和食物bi,区域之间有m条定向路径,每条路径有人数通过上限ci.路径之间铺了电线,每当有人通过路径时有pi的概率会触碰到电线,但是第一个通过的 ...
- 启用/禁用以太网的批处理,用于一个网卡切换本地网络和wifi使用(Win10)
注意下面时英文版上默认网络使用,同时接入了网线和wifi时,本地网络优先wifi. 所以禁用本地网络就会自动连接到wifi,启用本地网络,就会禁用wifi. 批处理支持 -y 参数,跳过用户输入y,代 ...
- 【Error】IOError: [Errno 22] invalid mode
使用python打开或写入文件时会报以下错误IOError: [Errno 22] invalid mode,比如打开f:\nnpm.txt时,可以在地址前面加上r或R,即r'f:\nnpm.txt' ...
- C#运算符笔记
C# 原来也可以进行向量运算,这里解决了一个为时已久的疑惑. operator struct Vector { public double x, y, z; public Vector(double ...