码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer:二叉树中和为某一值得路径

时间:2020-04-19 10:51:31      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:color   title   root   number   子节点   subject   off   输入   一个   

题目描述

输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
 
思路: 因为该题是输出符合整数的返回值,所以必定涉及到树的遍历,这里是根节点到各个节点的路径和,于是思考DFS
算法来接,每次递归只要判断当当前的target值是否为零并且左右子树是否全为空(叶子节点),如果满足就加入数组,递归
到最后一个子节点还不满足,则pop_back,当然有可能当前节点值已经满足当还不是叶子节点,这时候任然不满足条件,要继
续递归下去到叶子节点,然后target满足才可以加入数组。
 
代码:
/*
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>> res;
    vector<int> path;
    void find(TreeNode* root, int sum){
        if(root == nullptr) return;
        path.push_back(root -> val);
        sum -= root -> val;
        if(sum == 0 && !root -> left && !root->right) res.push_back(path);
        else{
            if(root -> left) find(root -> left, sum);
            if(root -> right) find(root -> right, sum);
        }
        path.pop_back();
    }
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
        find(root, expectNumber);
        return res;
    }
};

 

剑指offer:二叉树中和为某一值得路径

标签:color   title   root   number   子节点   subject   off   输入   一个   

原文地址:https://www.cnblogs.com/BillowJ/p/12730235.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!