题解 | #二叉树根节点到叶子节点和为指定值的路径#

二叉树根节点到叶子节点和为指定值的路径

http://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a

/**
 * struct TreeNode {
 *    int val;
 *    struct TreeNode *left;
 *    struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @param sum int整型 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > pathSum(TreeNode* root, int sum) {
        // write code here
        if (!root)
            return {};
        target = sum;
        vector<int> r;
        r.push_back(root->val);
        digui(root, r);
        return re;

    }
    void digui(TreeNode* x, vector<int> r)
    {

        if (x->left != NULL)
        {
            vector<int> r1 = r;
            r1.push_back(x->left->val);
            x->left->val = x->val + x->left->val;
            digui(x->left, r1);
        }
        if (x->right != NULL)
        {
            vector<int> r2 = r;
            r2.push_back(x->right->val);
            x->right->val = x->val + x->right->val;
            digui(x->right, r2);
        }
        if (x->left == NULL && x->right == NULL)
        {

            if (x->val == target)
                re.push_back(r);
        }
    }
private:
    int target;
    vector<vector<int> > re;//各组从根到叶的记录
};
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务