Path Sum II

来源:互联网 发布:淘宝钱货一方 编辑:程序博客网 时间:2024/05/18 09:04
/** * 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> >    ret;        if(!root)   return ret;        //postorder traversal        vector<TreeNode *> v;        TreeNode *pNode=root;        TreeNode *pre=0;        while(!v.empty() || pNode)        {            if(pNode)            {                v.push_back(pNode);                pNode=pNode->left;            }            else            {                TreeNode *top=v[v.size()-1];                if(pre==top->right)                {                    if(!top->left && !top->right)                    {                        if(sum==getSum(v))                        {                            vector<int> result;                            for(size_t i=0;i!=v.size();i++)                            {                                result.push_back(v[i]->val);                            }                            ret.push_back(result);                        }                    }                    v.pop_back();                    pre=top;                }                else                {                    pNode=top->right;                    pre=0;                }            }        }        return ret;    }private:    int getSum(vector<TreeNode*> &v)    {        int sum=0;        for(size_t i=0;i!=v.size();i++)        {            sum+=v[i]->val;        }        return sum;    }};

0 0
原创粉丝点击