zoukankan      html  css  js  c++  java
  • 【Leetcode】Path Sum II

    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]
    ]
    思路:与【Leetcode】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>> result;
            vector<int> path;
            pathSumHelper(result, path, root, sum);
            
            return result;
        }
        
    private:
        void pathSumHelper(vector<vector<int>> &result, vector<int> &path, TreeNode *node, int sum)
        {
            if(node == NULL)    return;
            if(node->left == NULL && node->right == NULL && node->val == sum)
            {
                path.push_back(node->val);
                result.push_back(path);
                path.pop_back();
                return;
            }
            
            path.push_back(node->val);
            pathSumHelper(result, path, node->left, sum - node->val);
            pathSumHelper(result, path, node->right, sum - node->val);
            path.pop_back();
        }
    };

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    约瑟夫环问题拓展 C/C++
    C/C++之STL简介
    详解约瑟夫环问题 C/C++
    HC-SR04超声波传感器
    TCRT5000 红外传感器
    win10的docker无法运行mysql的image,Public Key Retrieval is not allowed
    如何将docker默认的安装位置从C盘改为D盘?
    免费PDF阅读器
    A1B2B3
    动态代理
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4813335.html
Copyright © 2011-2022 走看看