LintCode 376 Binary Tree Path sum

来源:互联网 发布:三层网络配置实例 编辑:程序博客网 时间:2024/06/08 10:26

LintCode 376 Binary Tree Path sum
Example

Given a binary tree, and target = 5:

 1/ \

2 4
/ \
2 3

return

[
[1, 2, 2],
[1, 4]
]

/** * Definition of TreeNode: * 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    */    void Travel(TreeNode* node, vector<int>& path, int sum, vector<vector<int>>& result, int target)    {        if (sum == target && node->left == NULL&& node->right == NULL)        {            result.push_back(path);        }        if (node->left != NULL)        {            sum += node->left->val;            path.push_back(node->left->val);            Travel(node->left, path, sum, result, target);            path.pop_back();            sum -= node->left->val;        }        if (node->right != NULL)        {            sum += node->right->val;            path.push_back(node->right->val);            Travel(node->right, path, sum, result, target);            path.pop_back();            sum -= node->right->val;        }    }    vector<vector<int>> binaryTreePathSum(TreeNode *root, int target)    {        // Write your code here        vector<vector<int>>* result = new vector<vector<int>>;        if (root == NULL)            return *result;        vector<int>* path = new vector<int>;        path->push_back(root->val);        int sum = root->val;        Travel(root, *path, sum, *result, target);        return *result;    }};