zoukankan      html  css  js  c++  java
  • 路径总和(leetcode 113)

    题目描述如下所示:

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

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

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

     

    思路:从根节点开始,分别遍历左右子树,如果到达叶子节点且满足路径之和等于sum,则加入到结果中

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 class Solution {
    11 
    12     public List<List<Integer>> pathSum(TreeNode root, int sum) {
    13         List<List<Integer>> res = new ArrayList<>();
    14         backtrack(root, sum, new ArrayList<>(), res);
    15         return res;
    16     }
    17 
    18     private void backtrack(TreeNode root, int sum, List<Integer> list, List<List<Integer>> res) {
    19         if (root == null) {
    20             return ;
    21         }
    22         // 添加当前值到路径中
    23         list.add(root.val);
    24         sum -= root.val;
    25 
    26         if (0 == sum && root.left == null && root.right == null) {
    27             res.add(new ArrayList<>(list));
    28         } 
    29 
    30         backtrack(root.left, sum, list, res);
    31         backtrack(root.right, sum, list, res);
    32         // 重置状态
    33         list.remove(list.size() - 1);
    34     }
    35 }
  • 相关阅读:
    maven pom 详细配置
    寻找二叉树最远的叶子结点
    控制两个线程的启动顺序
    tensorflow之神经网络实现流程总结
    ubuntu服务器安装FTP服务
    ubuntu服务器 安装 seafile 个人网盘
    软件工程实践总结作业~
    Beta 答辩总结
    Beta 冲刺 (7/7)
    Beta 冲刺 (6/7)
  • 原文地址:https://www.cnblogs.com/skylv/p/13389837.html
Copyright © 2011-2022 走看看