题目描述

输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
 

解题思路

利用前序遍历的思想,定义FindPath函数,其中paths保存所有符合题目要求的路径,path保存当前遍历到的路径,cNum为当前路径和。从root开始分别在左孩子和右孩子递归的调用FindPath,并更新当前路径path和路径和cNum。若遇到叶子节点,比较当前路径和cNum和期望路径和eNum,若相等则把path加入到paths中。每次遍历完左右孩子时把当前结点值从path中弹出,回溯到父节点开始遍历另一条路径。

代码

 /*
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> > paths;
vector<int> path;
FindPath(root, expectNumber, paths, path, );
return paths;
}
void FindPath(TreeNode* root,int eNum,vector<vector<int> > &paths,vector<int> &path,int cNum){
if(root != NULL){
path.push_back(root->val);
cNum += root->val;
if(root->left != NULL)
FindPath(root->left, eNum, paths, path, cNum);
if(root->right != NULL)
FindPath(root->right, eNum, paths, path, cNum);
if(root->left == NULL&&root->right == NULL&&cNum == eNum)
paths.push_back(path);
path.pop_back();
}
}
};

剑指offer-二叉树中和为某一值的路径的更多相关文章

  1. 剑指offer 二叉树中和为某一个值的路径

    剑指offer 牛客网 二叉树中和为某一个值的路径 # -*- coding: utf-8 -*- """ Created on Tue Apr 9 15:53:58 2 ...

  2. 剑指Offer 二叉树中和为某一值的路径(dfs)

    题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.     思路: 递归,然后深搜,因为题目定义的, ...

  3. 剑指Offer——二叉树中和为某一值的路径

    题目描述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 分析: 先序遍历二叉树,找到二叉树中结点值的和 ...

  4. 用java刷剑指offer(二叉树中和为某一值的路径)

    题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大 ...

  5. 用js刷剑指offer(二叉树中和为某一值的路径)

    题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大 ...

  6. 剑指offer--31.二叉树中和为某一值的路径

    深度优先搜索 --------------------------------------------------------------------------------------------- ...

  7. 剑指Offer-24.二叉树中和为某一值的路径(C++/Java)

    题目: 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大的 ...

  8. 剑指offer-二叉树中和为某一值的路径24

    题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大 ...

  9. 剑指offer-二叉树中和为某一值的路径-python

    题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大 ...

随机推荐

  1. 8Manage:聚焦研发企业利器——研发项目管理

    [导读]研发是企业保持核心竞争力的基石.那么对于研发企业来说,如何计划研发项目目标.保障项目的稳定运行,如何分配人才.资源,把控项目成本呢?这些一系列问题摆在管理者面前!引入8Manage研发项目管理 ...

  2. AndroidStudio Frameworks detected: Android framework is detected in the project Configure

    出现这个问题应该是文件没有用正确的方式打开.   遇到这种情况,就要去检查下载的这个包的结构.       我的这个文件明显真正的是下面这个文件夹,如果把整个当做一个android文件打开会导致文件结 ...

  3. Hadoop3.0完全分布式集群安装部署

    1. 配置为1个namenode(master主机),2个datanode(slave1主机+slave2主机)的hadoop集群模式, 在VMWare中构建3台运行Ubuntu的机器作为服务器: 关 ...

  4. 一年java工作经验的面试题总结(持续更新中)

    本人是17年6月份毕业的,3月份出来实习,算起来也是工作一年了吧,金三银四,博主也考虑换一份工作,于是最近面试了几家,总结一下面试中的问题,大家一起交流学习. 第一次面试  ①说下java类的加载 ② ...

  5. Java反射总结

    一. 获取Class对象的3种方法: 1. Class.forName("");例如:Class.forName("java.lang.String"); 2. ...

  6. 怎么解决VMware“该虚拟机似乎正在使用中”问题

    问题如下:

  7. VMware 滴滴声解决

    去除虚拟机tab时的滴滴声 # cat /etc/inputrc Set bell-style none 重启生效

  8. 从Socket入门到BIO,NIO,multiplexing,AIO

    Socket入门 最简单的Server端读取Client端内容的demo public class Server { public static void main(String [] args) t ...

  9. python处理点云数据并生成三维点云模型

    1.python代码: 1 import numpy as np 2 import matplotlib.pyplot as plt 3 from mpl_toolkits.mplot3d impor ...

  10. Algorithm --> 棋盘中求出A到B的最小步数

    求出A到B的最小步数 给定象棋盘,以及位置A和B, 求出从A到B的最小步数 代码: #include <cstdio> #include <iostream> #include ...