【LeetCode】Path Sum II

来源:互联网 发布:cots软件 编辑:程序博客网 时间:2024/06/12 00:00

Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.

For example:
Given the below binary tree and sum = 22,
              5             / \            4   8           /   / \          11  13  4         /  \    / \        7    2  5   1

return

[   [5,4,11,2],   [5,8,4,5]]
思路:同Path Sum

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<vector<int> > pathSum(TreeNode *root, int sum)  {        vector<vector<int> > vii,vvi;        vector<int> vi;        if(root==NULL)return vii;          if((root->right==NULL)&&(root->left==NULL)){              if(sum==root->val){                vi.push_back(sum);                vii.push_back(vi);                return vii;            }              else return vii;          }          else if(root->left==NULL){              vii=pathSum( root->right, sum-root->val);             if(vii.size()>0){                for(int i=0;i<vii.size();i++){                    vector<int>::iterator it=vii[i].begin();                    vii[i].insert(it,root->val);                 }                return vii;            }        }          else if(root->right==NULL){              vii=pathSum( root->left, sum-root->val);             if(vii.size()>0){                for(int i=0;i<vii.size();i++){                    vector<int>::iterator it=vii[i].begin();                    vii[i].insert(it,root->val);                 }                return vii;            }        }else{              vii=pathSum( root->right, sum-root->val);            if(vii.size()>0){                for(int i=0;i<vii.size();i++){                    vector<int>::iterator it=vii[i].begin();                    vii[i].insert(it,root->val);                 }            }            vvi=pathSum( root->left, sum-root->val);            if(vvi.size()>0){                for(int i=0;i<vvi.size();i++){                    vector<int>::iterator it=vvi[i].begin();                    vvi[i].insert(it,root->val);                 }            }            for(int i=0;i<vvi.size();i++){                    vii.push_back(vvi[i]);            }            return vii;        }      }};





0 0
原创粉丝点击