113. Path Sum II

来源:互联网 发布:微积分中d含义,知乎 编辑:程序博客网 时间:2024/06/05 17:33

参考链接:

点击打开链接

/** * 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 {vector<vector<int>> res;    public:    void pathFind(TreeNode* root, int nowsum , vector<int> tpath ,int sum){        nowsum= nowsum+ root->val;        tpath.push_back(root->val);        //只对相等的情况入栈,还有只在左右子节点都为空的情况下才检查是否是和为指定值        if(!root->left && !root->right){            if(nowsum == sum){                res.push_back(tpath);                //返回的是上一层,正好继续对左右子树探测。这个我运用的不是很好                return;            }        }        //当左子树存在的情况        if(root->left){            pathFind(root->left , nowsum , tpath , sum);        }        if(root->right){            pathFind(root->right , nowsum , tpath , sum);        }    }    vector<vector<int>> pathSum(TreeNode* root, int sum) {        vector<int> tpath;                if(root == NULL){            return res;        }        //int nowsum = 0;        //忽略一切情况只记录相等情况        //递归计算        pathFind(root ,0 , tpath , sum);        return res;     }};


原创粉丝点击