剑指offer 25:二叉树中和为某一值的路径
题目描述
解题思路
基本路线仍未进行二叉树遍历,只不过在路过一个节点时需要对该节点走过的路径长度进行统计。
C++代码实现:
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
vector<vector<int> > result;
if (root==NULL){
return result;
}
int alreadyNum=;
vector<int> path;
findsubway(result,path,root,expectNumber,alreadyNum);
return result;
}
void findsubway(vector<vector<int> >& result,vector<int>& path,TreeNode* root,int expectNumber,int& alreadyNum){
alreadyNum+=root->val;
path.push_back(root->val);
//判断是否是叶子节点
bool isLeaf=(root->left==NULL)&& (root->right==NULL);
if(isLeaf){
if(alreadyNum==expectNumber){
vector<int> tmp(path);
//是满足要求的路径,存入
result.push_back(tmp);
}
}else{
//如果遇见当前节点路径已经比期望值要大,则跳过此子树
if(alreadyNum<expectNumber){
if(root->left!=NULL){
findsubway(result,path,root->left,expectNumber,alreadyNum);
}
if(root->right!=NULL){
findsubway(result,path,root->right,expectNumber,alreadyNum);
}
}
}
alreadyNum-=root->val;
path.pop_back();
}
};
剑指offer 25:二叉树中和为某一值的路径的更多相关文章
- 剑指offer 25 二叉树中和为某一值的路径
非递归方法: class Solution { public: vector<vector<int>> FindPath(TreeNode* root,int expectNu ...
- 剑指Offer:二叉树中和为某一值的路径【34】
剑指Offer:二叉树中和为某一值的路径[34] 题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. ...
- 剑指 Offer 34. 二叉树中和为某一值的路径 + 记录所有路径
剑指 Offer 34. 二叉树中和为某一值的路径 Offer_34 题目详情 题解分析 本题是二叉树相关的题目,但是又和路径记录相关. 在记录路径时,可以使用一个栈来存储一条符合的路径,在回溯时将进 ...
- 剑指 Offer 34. 二叉树中和为某一值的路径
剑指 Offer 34. 二叉树中和为某一值的路径 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径. 示例: 给定如下 ...
- 【剑指Offer】二叉树中和为某一值的路径 解题报告(Python)
[剑指Offer]二叉树中和为某一值的路径 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervi ...
- 【剑指offer】二叉树中和为某一值的路径
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26141815 题目描写叙述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数 ...
- 【Java】 剑指offer(34) 二叉树中和为某一值的路径
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有 ...
- Go语言实现:【剑指offer】二叉树中和为某一值的路径
该题目来源于牛客网<剑指offer>专题. 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路 ...
- 《剑指offer》二叉树中和为某一值的路径
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- 【剑指offer】二叉树中和为某一值的路径,C++实现
原创文章,转载请注明出处! 博客文章索引地址 1.题目 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径由结点和有向边组成,从根结点到叶节点. // 二叉树结点的定义 st ...
随机推荐
- centos_mysql 安装脚本
#!/bin/bash env echo "Download msyql5.7 rpm..." sudo yum install wget wget -i -c http://de ...
- Things 3 for Mac是什么?如何使用?
为大家介绍一款实用的效率管理软件“Things 3 for Mac”,它通过使用标签和智能过滤条,东西结合了强大的功能和简单性,Leopard风格的来源列表可以快速轻松地进行对焦.与一个美丽的用户界面 ...
- try catch在for循环外面还是里面
static void Main(string[] args) { //将异常写在循环外,出现异常循环终止 try { Console.WriteLine("抛出异常不输出"); ...
- C# -- 模拟扑克牌发牌
C# -- 模拟扑克牌发牌 1. User 类: 玩家 public class User { private List<PaperCard> listCard = new List&l ...
- PlayJava Day028
1.网络程序中套接字(Socket)用于将应用程序与端口连接起来 套接字是一个假想的连接装置,就像插插头的设备”插座“,用于连接电器与电线,如下所示 客户端:应用程序 <----> Soc ...
- MVVM解析
闲来无事看到了一个关于Vue的MVVM的简单讲解,觉得写得不错,做个分享. 文章地址 https://github.com/DMQ/mvvm 文章内容我就不贴出,比较简洁明了,我记录一下我的一些思考总 ...
- vue-router精简demo
cnpm install vue-router --save-dev 或者 cnpm install vue-router --save 全局引用VueRouter import VueRouter ...
- LeetCode刷题191218
好多天没有更新了,今天有空,刷一道. 算法第5题 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: ...
- 文件迁移到FileTable中
看此文档前,先参考一下文档 https://blog.csdn.net/downmoon/article/details/24374609 环境:阿里云ECS SQL Server 2017 + De ...
- shell 脚本里的$(( ))、$( )、``与${ }的区别
shell 脚本里的命令执行 1. 在bash中,$( )与` `(反引号)都是用来作命令替换的. 命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组 ...