1 题目描述

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

2 思路和方法

(1)路径的定义:从树的根结点开始往下一直到叶结点

(2)树的遍历

(3)路径的保存:每次找到路径之后,应将路径保存到 ArrayList<ArrayList<Integer>> result 中,最终打印全部路径

思路(1,2,3),方法(递归):

  (1)判断树是否为null、是否只有根节点

  (2)用前序遍历方法,可以首先访问根节点,然后将根节点入队列(或栈均可),并将数值和之前入队列的总和num相加,。栈可直接用pop()将该最后加入栈的节点弹出。本题使用队列,队列:vector<vector<int>>类型使用push_back()压入数据,pop_back()将最后入队的节点弹出;数组ArrayList<ArrayList<Integer>>使用 add()添加数据,使用remove(list.size()-1)将最后入队的节点弹出。

  (3)判断当前之和否等于给定的值,判断当前节点是否叶节点。 若当前值等于给定值,且当前节点是叶节点,则打印路径信息; 若当前值小于给定值,且当前节点不是叶节点,则递归调用该节点的左右子树; 若当前值大于给定值,无需递归了(在默认节点值为正数的情况下)。

3 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>> result;
vector<int> temp;
vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
if(root==NULL)
return result;
temp.push_back(root->val);
if(expectNumber-root->val== && root->left==NULL && root->right==NULL)
result.push_back(temp);
FindPath(root->left,expectNumber-root->val);
FindPath(root->right,expectNumber-root->val);
if(temp.size()>)
temp.pop_back();
return result;
}
};

4 参考资料

https://blog.csdn.net/LawrenceLan0416/article/details/89707117

剑指offer24:二叉树中和为输入整数值的所有路径。(注意: 在返回值的list中,数组长度大的数组靠前)的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. 剑指Offer23 二叉树中和为sum的路径

    /************************************************************************* > File Name: 23_FindPa ...

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

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

  9. 剑指offer25 二叉树中和为某一直的路径

    先序遍历 class Solution { public: vector<vector<int> > FindPath(TreeNode* root,int expectNum ...

随机推荐

  1. white-space 标签 使用

    white-space MSD定义为: 是用来设置如何处理元素中的空白 其使用场景有很多,比如:横向滑动,超出显示省略号,输出空格显示空格等 1.横向滑动 在写手机页面的过程中,我想大部分人都遇到横向 ...

  2. Leetcode题目283.移动零(简单)

    题目描述: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原 ...

  3. 重读APUE(13)-可靠信号

    在信号产生和传递之间有一段时间间隔,称为信号是未决的: 进程可以设置阻塞信号传递:如果进程产生了一个阻塞的信号,并且对该信号的动作是系统默认或者捕捉该信号,则该进程保持此信号为未决状态,直到该进程对此 ...

  4. linux 下 tcpdump 命令详解

    用途 在网络上转储流量 语法 tcpdump [ -a ] [ -A ] [ -B buffer_size ] [ -d ] [ -D ] [ -e ] [ -f ] [ -l ] [ -K ] [  ...

  5. go -- application/x-www-form-urlencoded发送post数据

  6. PHP魔术方法和魔法变量详解

    一.魔术常量 __LINE__ 文件中的当前行号.__FILE__ 文件的完整路径和文件名.如果用在被包含文件中,则返回被包含的文件名. 自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对 ...

  7. Editplus的运行JAVA的配置

    工具--->参数设置

  8. python-30个骚操作

    1.冒泡排序     2.计算x的n次方的方法     3.计算a*a + b*b + c*c + ……     4.计算阶乘 n!             5.列出当前目录下的所有文件和目录名   ...

  9. java定时任务Timer/scheduleAtFixedRate

    Timer类是用来执行任务的类,定时器 scheduleAtFixedRate模式可以用,在这个模式下,Timer会尽量的让任务在一个固定的频率下运行. 参考:http://swiftlet.net/ ...

  10. 图像分割-Mask Scoring R-CNN

    转载:https://zhuanlan.zhihu.com/p/58291808 论文链接:https://arxiv.org/abs/1903.00241 代码链接:https://github.c ...