当前位置: 代码迷 >> 综合 >> LeetCode 113 路径总和
  详细解决方案

LeetCode 113 路径总和

热度:42   发布时间:2024-02-02 15:05:28.0
  • 分析

     使用递归的方法,使用一个vector记录走过的路径。通过这个题,学习怎么求二叉树的路径,求二叉树中两个给定节点的最近公共祖先也是用类似的思想,那么应该怎么求呢???

  • 代码
/*** 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 mypathSum(TreeNode* root, int sum, vector<vector<int>> & vec, vector<int> temp){if(root == nullptr) return;sum -= root -> val;if(sum != 0 || (sum == 0 && (root -> left != nullptr || root -> right != nullptr))){temp.push_back(root -> val);mypathSum(root -> left, sum, vec, temp);mypathSum(root -> right, sum, vec, temp);}else{if(root -> left == nullptr && root -> right == nullptr){temp.push_back(root -> val);vec.push_back(temp);                }}}vector<vector<int>> pathSum(TreeNode* root, int sum) {vector<vector<int>> ans;vector<int> temp;mypathSum(root, sum, ans, temp);return ans;}
};