题解 | #二叉树根节点到叶子节点和为指定值的路径#

二叉树根节点到叶子节点和为指定值的路径

http://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a

利用回溯求解,注意判断退出条件

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @param sum int整型 
     * @return int整型vector<vector<>>
     */
    vector<int> vec;
    vector<vector<int>> ans;
    void getpath(TreeNode* root, int sum, int path){
        if(root==nullptr) return;
        if(!root->left && !root->right){
            if(path+root->val==sum){
                vec.push_back(root->val);
                ans.push_back(vec);
                vec.pop_back();
                return;
            }
            return;
        }
        vec.push_back(root->val);
        path+=root->val;
        getpath(root->left, sum, path);
        path-=root->val;
        vec.pop_back();
        vec.push_back(root->val);
        path+=root->val;
        getpath(root->right,sum, path);
        path-=root->val;
        vec.pop_back();
    }

    vector<vector<int> > pathSum(TreeNode* root, int sum) {
        vec.clear();
        ans.clear();
        if(root == nullptr) return {};
        getpath(root,sum,0);
        return ans;
    }
};
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务