113. Path Sum II

摘要:
/**113.PathSumII*1.18ByMingyang*典型回溯。但是,请注意,此处的值可能为负值,因此不能使用小于0的和来进行任何判断*1。长度标准:无*2。可选范围:每个节点的左、右子节点。
    /*
     * 113. Path Sum II 
     * 11.18 By Mingyang
     * 典型的backtracking,不过注意,这里的值可能是负数,所以不能用sum小于0来做任何判断
     * 1.长度标准:无
     * 2.可选的范围:每一个node的左边和右边子节点(不为空的情况)。
     * 3.往前走一步:temp加一个,sum减一个
     * 4.后退一步:把temp remove掉
     * 5.特殊的case:root==null也就是走到了根节点的下一个空了
     * 这个题目别看答案简单,自己做起来千疮百孔了:
     * 1.dfs函数以前习惯一上来就是成功案例的base case,殊不知万一root为null的情况根本就没有下文了
     * 2.需要一开始就把temp加上root的值,因为万一遇到只有一个节点1,和sum=1,应该返回new ArrayList<Integer>(temp)
     * 总结就是注意空节点的判断和左右节点分别为空的判断才能走下一步
     */
     public List<List<Integer>> pathSum(TreeNode root, int sum) {
         List<List<Integer>> res = new ArrayList<List<Integer>>();
         List<Integer> temp = new ArrayList<Integer>();
         dfs(root, sum, res, temp);
         return res;
     }
     public void dfs(TreeNode root, int sum, List<List<Integer>> res, List<Integer> temp){
         if(root==null) return;
         temp.add(root.val);
         if(root.left==null && root.right==null ){
             if(root.val==sum)
                 res.add(new ArrayList<Integer>(temp));
             return;
         }
         if(root.left!=null) {
             dfs(root.left,sum-root.val,res,temp);
             temp.remove(temp.size()-1);
         }
         if(root.right!=null) {
             dfs(root.right,sum-root.val,res,temp);
             temp.remove(temp.size()-1);
         }
     }

免责声明:文章转载自《113. Path Sum II》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇LVS 之搭建109.Convert sorted list to BST下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Laravel的三种安装方法总结

Laravel号称巨匠级PHP框架,越来越多的PHPer选择它作为开发框架,作为一个Laravel初学者相信很多人向我一样被安装挡在了门外。所以今天结合文档和自己的学习经历总结一下Laravel的安装方法,希望大家在学习Laravel的时候少走些弯路。Laravel安装方法大的来分可以分为利用Composer安装和一键安装包安装。 先来说一下...

Java EE 6 最终草案暗示了平台的未来发展方向

Java EE 6最终草案暗示了平台的未来发展方向 作者 Charles Humble 译者 张龙 发布于 2009年10月19日 下午1时4分 JSR-316(Java E...

Mysql怎样控制replace替换的次数?

我想把“ABC是ABC”替换成“123是ABC”,也就是找出第一个ABC替换成123,MYSQL命令应该怎么写?UPDATE data SET body=REPLACE(body, 'ABC', '123');我用这个命令时会把所有ABC都替换成123,不知道怎么控制替换次数,请高人指教。 hemu780924大哥的代码虽然能用,但是有个...

Lisp的给力特性(V.S. Python3) 第二篇 程序即人生 博客频道 CSDN.NET

Lisp的给力特性(V.S. Python3) 第二篇 - 程序即人生 - 博客频道 - CSDN.NET Lisp的给力特性(V.S. Python3) 第二篇 分类:2010-12-24 01:013422人阅读评论(16)收藏举报 write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 腾...

欢迎阅读 Erlang OTP 设计原理文档!¶

欢迎阅读 Erlang OTP 设计原理文档! — Erlang OTP Design Principles v0.1 documentation 欢迎阅读 Erlang OTP 设计原理文档!¶ 原文: OTP Design Principles 翻译: ShiningRay 有任何问题请到 这里 留言。 目录 概述 监督树 行为 应用...

c++ using namespace std; 海明威 博客园

c++ using namespace std; - 海明威 - 博客园 c++ using namespace std; 一、先说<iostream.h>和<iostream>这两个被#include的预处理命令,它们是不一样的,它们其实是2个文件,两个文件的内容也是不一样的,.h的文件新的C++标准明确已经不支持了,新标准为了...