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);
        }
    }
  • 相关阅读:
    BUUCTF-[强网杯 2019]随便注
    Oracle 存储过程
    java.lang.OutOfMemoryError: Java heap space
    Oracle 约束
    Docker 学习1 容器技术基础入门
    Kubernetes 学习1 Devops 核心要点和k8s架构概述
    mysql Sql语句
    Shell 编程详解
    git 学习
    Linux awk学习
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10510840.html
Copyright © 2011-2022 走看看