leetcode Path Sum II

来源:互联网 发布:网络推广的优势 编辑:程序博客网 时间:2024/05/16 10:51

python:

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def __init__(self):        self.paths = []    def recur  (self, root, path, sum):        if root.left==root.right==None:            if root.val ==sum:                self.paths.append(path+[sum])                return        else:            new_path = path+[root.val]            if root.left!=None:                self.recur(root.left,new_path,sum-root.val)            if root.right!=None:                self.recur(root.right,new_path,sum-root.val)            def pathSum(self, root, sum):        """        :type root: TreeNode        :type sum: int        :rtype: List[List[int]]        """        if root==None : return [];        self.recur(root,[],sum)        return self.paths




c++:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<vector<int>> paths;        vector<vector<int>> pathSum(TreeNode* root, int sum) {        vector<int> path;        if (root==NULL) return paths;        recur(root,path,sum);        return paths;    }        void recur(TreeNode* root, vector<int>& path, int sum){        path.push_back(root->val);        if (root->left==NULL && root->right==NULL){            if (root->val==sum) paths.push_back(path);            path.pop_back();            return;        }        else{            if (root->left!=NULL) recur(root->left,path,sum-root->val);            if (root->right!=NULL)recur(root->right,path,sum-root->val);            path.pop_back();
<span style="white-space:pre"></span>   return;        }    }};


0 0
原创粉丝点击