zoukankan      html  css  js  c++  java
  • leetcode 刷题之路 66 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,输出二叉树中从根节点到叶子节点全部路径中和等于sum的路径。

    每经过路径上的一个节点。记录这个节点值到temp变量中,用sum减去这个节点值得到一个新的sum值,用这个新的sum值去处理节点的非空左右子树,当节点为叶子节点且sum等于节点值时。说明到了路径终点且路径经过的节点和恰好等于sum,此时记录temp到结果数组res中。

    处理过程中使用引用传參的方式传递temp和res变量。省却耗时的參数复制操作。由于是引用传递。节点在temp运行push_back操作并对其非空左右子树递归调用函数完毕后,须要对temp进行pop_back操作。清除自己填入的节点值,这样才干不影响后面程序的处理。

    AC code:

    /**
     * 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<int> temp;
            vector<vector<int>> res;
            helper(root,sum,temp,res);
            return res;
        }
        void helper(TreeNode *root,int sum,vector<int>& temp,vector<vector<int>> &res)
        {
            if(root==NULL)
                return;
            if(root->left==NULL&&root->right==NULL&&sum==root->val)
            {
                temp.push_back(root->val);
                res.push_back(temp);
                temp.pop_back();
                return;
            }
            if(root->left!=NULL)
            {
                temp.push_back(root->val);
                helper(root->left,sum-root->val,temp,res);
                temp.pop_back();
            }
            if(root->right!=NULL)
            {
                temp.push_back(root->val);
                helper(root->right,sum-root->val,temp,res);
                temp.pop_back();
            }
        }
    };





  • 相关阅读:
    Rotation Kinematics
    离职 mark
    PnP 问题方程怎么列?
    DSO windowed optimization 代码 (4)
    Adjoint of SE(3)
    IMU 预积分推导
    DSO windowed optimization 代码 (3)
    DSO windowed optimization 代码 (2)
    OKVIS 代码框架
    DSO windowed optimization 代码 (1)
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7059250.html
Copyright © 2011-2022 走看看