zoukankan      html  css  js  c++  java
  • 【leetcode】Path Sum2

    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]
    ]
    

     解体思路:利用递归深度优先遍历,保存中间结果。

    /**
     * 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> intermediate;
            dfs(root, sum, intermediate, result);
            return result;
        }
        
        void dfs(TreeNode *root, int gap, vector<int> &intermediate, 
                vector<vector<int> > &result){
            if(root == nullptr)
                return;
            intermediate.push_back(root->val);
            
            if(root->left == nullptr && root->right == nullptr){
                if(gap == root->val)
                    result.push_back(intermediate);
            }
            
            dfs(root->left, gap - root->val, intermediate, result);
            dfs(root->right, gap - root->val, intermediate, result);
            
            intermediate.pop_back();//弹出回退
        }
    };
     
  • 相关阅读:
    获取指定<文字行数>的<高度>是多少 TextKit
    JS 与 OC 交互
    PHP-note
    MySQL函数
    freeSWITCH之多平台测试通信
    freeSWITCH之安装
    PHP面向对象
    MySQL Optimization 优化原理
    理解常量指针与指针常量?
    InterView之PHP(2)
  • 原文地址:https://www.cnblogs.com/zxy1992/p/4386852.html
Copyright © 2011-2022 走看看