• NC_8_BINARYTREE_SUMPATH


    package org.example.interview.practice;
    
    import java.util.ArrayList;
    
    /**
     * @author xianzhe.ma
     * @date 2021/7/12
     * 求和为某个值的所哟路径
     */
    
    public class NC_8_BINARYTREE_SUMPATH {
    
        public static ArrayList<ArrayList<Integer>> pathSum(TreeNode root, int sum) {
            // write code here
            ArrayList<Integer> list = new ArrayList<>();
            ArrayList<ArrayList<Integer>> lists = new ArrayList<>();
            dfs(lists, list, 0, sum, root);
            return lists;
        }
    
        private static void dfs(ArrayList<ArrayList<Integer>> lists, ArrayList<Integer> list,
                                int sum, int k, TreeNode root) {
            if (root == null) {
                return;
            }
    
            sum += root.val;
            list.add(root.val);
            if (root.left == null && root.right == null) {
                if (sum == k) {
                    ArrayList<Integer> gg = new ArrayList<>();
                    for (int l : list) {
                        gg.add(l);
                    }
                    //*注意list里面嵌入list的时候 改变里面的list会改变外层list 即添加进去的是引用*
                    lists.add(gg);
                }
                list.remove(list.size() - 1);
                return;
            }
            dfs(lists, list, sum, k, root.left);
            dfs(lists, list, sum, k, root.right);
            list.remove(list.size() - 1);
        }
    
        public static class TreeNode {
            int val = 0;
            TreeNode left = null;
            TreeNode right = null;
        }
    
        public static void main(String[] args) {
            TreeNode node = new TreeNode();
            node.val = 1;
    
            TreeNode leftChild = new TreeNode();
            leftChild.val = 2;
    
            node.left = leftChild;
    
            ArrayList<ArrayList<Integer>> result = pathSum(node, 3);
            for (ArrayList<Integer> list : result) {
                System.out.println(list.toString());
            }
        }
    }
  • 相关阅读:
    hdu--1231--并查集<连分量的个数>
    hdu--1272--并查集||图的特点
    hdu--1856--并查集的离散化处理
    hdu--1285 && 4857 --正向 || 逆向拓扑排序 && 优先队列
    hdu--1671--字典树<出现mle怎么解决>
    CF260--C--dp<最大不连续子序列和>
    Hibernate之级联关系配置的作用
    调用JS的方法
    Hibernate映射关系之多对多
    Hibernate映射关系之一对多
  • 原文地址:https://www.cnblogs.com/juniorMa/p/15879381.html
Copyright © 2020-2023  润新知