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]
    ]
    
    /**
     * 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 sub(vector<vector<int> >& ret,vector<int>& val,TreeNode *root,int sum){
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            if(root==NULL)return;
            if(root->left==NULL&&root->right==NULL){
                //leaf
                if(root->val==sum){
                    val.push_back(root->val);
                    ret.push_back(val);
                    val.pop_back();
                }
                else return;
            }
            else{
               val.push_back(root->val);
               sub(ret,val,root->left,sum-root->val);
               sub(ret,val,root->right,sum-root->val);
               val.pop_back();
            }
        }
        vector<vector<int> > pathSum(TreeNode *root, int sum) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            vector<vector<int> > ret;
            vector<int> val;
            sub(ret,val,root,sum);
            return ret;
        }
    };
    
  • 相关阅读:
    XML属性
    4.9Java游戏项目练习
    关于JVM结构的学习
    HelloWorld之Struts2
    进程调度
    JVM垃圾回收总结
    学会阅读Java字节码
    关于产品需求文档的各种D
    刘强东学习亚马逊:控制供应链 技术是最大障碍
    JVM内存溢出的方式
  • 原文地址:https://www.cnblogs.com/superzrx/p/3325959.html
Copyright © 2011-2022 走看看