二叉树中和为给定值的路径(leetcode 113)
一:解题思路
这道题目和 leetcode112 在二叉树中是否存在指定和类似,leetcode112 这个题目是判断存在性,而这个题目是求出符合条件的路径总数量,可以放在一起学习。
Time:O(n),Space:O(n)
二:完整代码示例 (C++版和Java版)
C++:
class Solution { private: void path(TreeNode* root, int sum, vector<int>& elem, vector<vector<int>>& result) { if (root == NULL) return; elem.push_back(root->val); if (root->left == NULL && root->right == NULL && root->val == sum) result.push_back(elem); path(root->left,sum-root->val,elem,result); path(root->right,sum-root->val,elem,result); elem.pop_back(); } public: vector<vector<int>> pathSum(TreeNode* root, int sum) { vector<vector<int>> result; vector<int> elem; path(root,sum,elem,result); return result; } };

浙公网安备 33010602011771号