zoukankan      html  css  js  c++  java
  • 113. 路径总和 II

    给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。

    说明: 叶子节点是指没有子节点的节点。

    示例:
    给定如下二叉树,以及目标和 sum = 22

                  5
                 / 
                4   8
               /   / 
              11  13  4
             /      / 
            7    2  5   1
    

    返回:

    [
       [5,4,11,2],
       [5,8,4,5]
    ]
    /**
    分别往左子树,右子树递归遍历所有路径,每次递归就减去相应的节点值,
    到了叶子结点,如果剩余值与叶子结点值相等,则该条路径符合要求,
    记录下该条路径,不符合的中间结果就pop掉
     */
    class Solution {
        List<List<Integer>> res = new ArrayList<>();
        public List<List<Integer>> pathSum(TreeNode root, int sum) {
            if(root == null) return res;
            List<Integer> path = new ArrayList<>();
            dfs(root,sum,path);
            return res;
        }
        private void dfs(TreeNode root, int sum, List<Integer> path){
            path.add(root.val);
            if(root.left == null && root.right == null && root.val == sum) //如果剩余值与叶子结点值相等
                    res.add(new ArrayList<Integer>(path));
            if(root.left != null) dfs(root.left,sum-root.val,path);
            if(root.right != null) dfs(root.right,sum-root.val,path);
            path.remove(path.size()-1);
        }
    }
  • 相关阅读:
    [模板] 文艺平衡树
    [模板]平衡树splay
    [ZJOI2015]诸神眷顾的幻想乡
    [HAOI2016]找相同字符
    SP8093 JZPGYZ
    SP1812 LCS2
    SP1811 LCS
    AHOI2013 差异
    TJOI2015 弦论
    工艺(SAM)
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10510840.html
Copyright © 2011-2022 走看看