题解 | #二叉树根节点到叶子节点和为指定值的路径#

二叉树根节点到叶子节点和为指定值的路径

http://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a

dfs

dfs的注意点:
	回复现场,也就是进入递归之前和退出递归的时候,状态是一样的
    有明确的结束的标记,也就是不能产生死循环
import java.util.*;

public class Solution {
    
    public ArrayList<ArrayList<Integer>> pathSum (TreeNode root, int sum) {
        ArrayList<ArrayList<Integer>> ret = new ArrayList<>();
        if(root != null)
            dfs(root,sum,ret,new ArrayList<Integer>(),0);
        return ret;
    }
    public void dfs(TreeNode node,int sum,ArrayList<ArrayList<Integer>> ret,ArrayList<Integer> list,int cur){
        cur += node.val;
        list.add(node.val);
        if(cur == sum && node.left == null && node.right == null){
            ArrayList<Integer> ele = new ArrayList<>(list);
            ret.add(ele);
        }
        if(node.left != null){
            dfs(node.left,sum,ret,list,cur);
        }
        if(node.right != null){
            dfs(node.right,sum,ret,list,cur);
        }
        list.remove(list.size() - 1);
        cur -= node.val;
    }
}
全部评论

相关推荐

11-03 14:38
重庆大学 Java
AAA求offer教程:我手都抬起来了又揣裤兜了
点赞 评论 收藏
分享
10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务