java循环

二叉树中和为某一值的路径

http://www.nowcoder.com/questionTerminal/b736e784e3e34731af99065031301bca

import java.util.ArrayList;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
import java.util.*;
public class Solution {
    public int sum(List<Integer> list) {
        return list.stream().reduce(0, (s1, s2) -> s1 + s2);
    }
    public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
        ArrayList<ArrayList<Integer>> list = new ArrayList<>();
        if (root == null) {
            return list;
        }
        Stack<TreeNode> queue = new Stack<>();
        Stack<ArrayList<Integer>> paths = new Stack<>();
        queue.push(root);
        ArrayList<Integer> vals = new ArrayList<>();
        vals.add(root.val);
        paths.push(vals);
        while (!queue.isEmpty()) {
            TreeNode node = queue.pop();
            ArrayList<Integer> path = paths.pop();
            if (node.left == null && node.right == null && sum(path) == target) {
                list.add(path);
            }
            if (node.right != null) {
                queue.push(node.right);
                ArrayList<Integer> integers = new ArrayList<>(path);
                integers.add(node.right.val);
                paths.add(integers);
            }
            if (node.left != null) {
                queue.push(node.left);
                ArrayList<Integer> integers = new ArrayList<>(path);
                integers.add(node.left.val);
                paths.push(integers);
            }
        }
        return list;

    }
}
全部评论

相关推荐

今天投了小鹏,收到了AI面,大概会问哪些啊?
期末一定及格:总共4个部分,心理测评、行测、然后就是问岗位、对岗位的理解、过往遇到了哪些难点怎么解决,很简单,没有什么特别专业的问题,都是一些综合素质相关的
小鹏汽车AI面6人在聊
点赞 评论 收藏
分享
05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务