• 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]
    ]
    
    解题思路:
    
        通过遍历树保存从根到叶子节点的路径和路径和。然后推断其和是否等于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:
        void dfs(TreeNode *rt,long long sum,vector<vector<int> > &ans,vector<int> &path)
        {
            path.push_back(rt->val);
            if (rt->left == rt->right && rt->left == NULL)
            {
                if (sum == rt->val)
                    ans.push_back(vector<int>(path.begin(),path.end()));
                path.erase(path.end()-1);
                return ;
            }
            if (rt->left)
                dfs(rt->left,sum - rt->val,ans,path);
            if (rt->right)
                dfs(rt->right,sum - rt->val,ans,path);
            path.erase(path.end()-1);
        }
        vector<vector<int> > pathSum(TreeNode *root, int sum) 
        {
            vector<vector<int> > ans ;
            if (!root)
                return ans ;
            vector<int> path;
            dfs(root,sum,ans,path);
            return ans ;
        }
    };
    


     
  • 相关阅读:
    队列
    StringBuilder&StringBuffer 源码阅读
    八种基本类型的包装类
    Object 源码阅读
    String 类源码分析
    SpringBoot 启动流程
    BeanDefinition 实例化过程
    BeanDefinition 解析流程【解析所有配置类】
    BeanDefinition 实例
    切面触发过程
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10515912.html
  • Copyright © 2020-2023  润新知