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);
        }
    }
  • 相关阅读:
    ACM HDU 3910 Liang Guo Sha(数学题,读懂题目)
    防止 7Zip 生成的 ZIP 文件在 Mac OS X 下出现乱码
    NYOJ 506
    Scanner
    String 与StringBuilder
    基于JAVA的聊天室开发
    PS加粗字体
    MySQL相关命令
    Matlab中数据处理和多项式插值与曲线拟合
    dos下进入某一文件
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10510840.html
Copyright © 2011-2022 走看看