zoukankan      html  css  js  c++  java
  • 剑指 Offer 34. 二叉树中和为某一值的路径

    题意

    典型的路径和题目

    思路

    • 路径和问题可以用DFS来解决,因为要记录序列,所以涉及了回溯操作,算是比较基础的题目

    • path_sum没有采用&形式是因为每一层都可以生成新的,我们就省去了每一层- root->val的操作

    代码

    class Solution {
    public:
        vector<vector<int>> ans;
        void dfs(TreeNode* root, vector<int>& path, int path_sum, int target) {
            if(!root) {
                return;
            }
            if(!root->left && !root->right) {
                path_sum += root->val;
                path.emplace_back(root->val);
                if(path_sum == target) {
                    ans.emplace_back(path);  
                }
                path.pop_back();
                return;
            }
            path.emplace_back(root->val);
            dfs(root->left, path, path_sum + root->val, target);
            dfs(root->right, path, path_sum + root->val, target);
            path.pop_back();
            return;
        }
        vector<vector<int>> pathSum(TreeNode* root, int sum) {
            int tmp;
            vector<int> path;
            dfs(root, path, 0, sum);
            return ans;
        }
    };
    
    如有转载,请注明出处QAQ
  • 相关阅读:
    单页应用 SPA(Sigle Page Aolication)
    初学数据库
    AJAX与跨域
    面向对象
    event、Dom
    HTML DOM Event 对象
    JavaScript RegExp 对象
    UNITY常用插件
    数据分析师
    VBA工作表排序转载
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/14356295.html
Copyright © 2011-2022 走看看