二叉树的路径和

来源:互联网 发布:甬温线动车事故 知乎 编辑:程序博客网 时间:2024/06/05 15:21

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

样例

给定一个二叉树,和 目标值 = 5:

     1    / \   2   4  / \ 2   3

返回:

[  [1, 2, 2],  [1, 4]]
思路:
我们遍历从根节点到叶子的所有路径,定义sum为路径经过节点值之和,若sum等于给定值,我们就输出该条路径中的节点组成的vector。
访问完所有节点结束。
代码:
/** * 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     */     vector<vector<int>> V;    vector<vector<int>> binaryTreePathSum(TreeNode *root, int target) {        // Write your code here        vector<int> v;        if(root==NULL) return V;        int sum=0;        find(root,target,v,sum);        return V;    }     void find(TreeNode *root,int target,vector<int> v,int sum)     {v.push_back(root->val);      sum+=root->val;      if(sum==target&&root->left==NULL&&root->right==NULL)        {V.push_back(v);}      if(root->left!=NULL) find(root->left,target,v,sum);      if(root->right!=NULL) find(root->right,target,v,sum);    }};


0 0