二叉树的路径和-LintCode

来源:互联网 发布:sql数据库开发 编辑:程序博客网 时间:2024/04/29 06:50

给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径。
一个有效的路径,指的是从根节点到叶节点的路径。
样例
给定一个二叉树,和 目标值 = 5:

    1   / \  2   4 / \2   3

返回:

[  [1, 2, 2],  [1, 4]]
#ifndef C376_H#define C376_H#include<iostream>#include<vector>using namespace std;class TreeNode{public:    int val;    TreeNode *left, *right;    TreeNode(int val)    {        this->val = val;        this->left = this->right = NULL;    }};class Solution {public:    /*    * @param root: the root of binary tree    * @param target: An integer    * @return: all valid paths    */    vector<vector<int>> binaryTreePathSum(TreeNode * root, int target) {        // write your code here        vector<vector<int>> v;        vector<int> val;        if (root == NULL)            return v;        TreeNode *node = root;        buildVector(node, target, 0, v, val);        return v;    }    void buildVector(TreeNode *root, int target, int num,vector<vector<int>> &v,vector<int> val)    {        num += root->val;        val.push_back(root->val);        if (target == num && (root->left == NULL&&root->right == NULL))            v.push_back(val);        if (root->left != NULL)            buildVector(root->left, target, num, v, val);        if (root->right != NULL)            buildVector(root->right, target, num, v, val);        num -= root->val;        val.pop_back();    }};#endif
原创粉丝点击