給定一個二叉樹和一個目標和,找到全部從根節點到葉子節點路徑總和等於給定目標和的路徑。
說明: 葉子節點是指沒有子節點的節點。node
代碼實現:ide
/** * 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: void preorder(TreeNode* node,int &path_val,vector<int> &path,vector<vector<int> > &result,int &sum) { if(!node) return ; path_val += node->val; path.push_back(node->val); if(node->left==NULL && node->right == NULL && path_val == sum) { result.push_back(path); } preorder(node->left,path_val,path,result,sum); preorder(node->right,path_val,path,result,sum); path_val -= node->val; path.pop_back(); } vector<vector<int>> pathSum(TreeNode* root, int sum) { int path_val = 0; vector<vector<int> >result; vector<int> path; preorder(root,path_val,path,result,sum); return result; } };