• LeetCode OJ 113. Path Sum II


    Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.

    For example:
    Given the below binary tree and sum = 22,

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

    return

    [
       [5,4,11,2],
       [5,8,4,5]
    ]
    

    相比较判断一个树中是否有sum为某一值的从根节点到叶子节点的路径,这个题目要求把所有这样的路径找出来。如果我们要用递归的方法,如何来存储这样的路径呢?

    一个节点如果有左右两个子节点,那么就会产生两条不同的路径,在递归的过程中,我们要不断地new一个list来存储新出现的分支,并要把从根节点到达当前节点的路径拷贝到新建的list中。当到达叶子节点后,如果是一条匹配路径,则把该路径加入到存储路径的list中,否则的话舍弃该路径。代码如下:

     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 public class Solution {
    11     
    12     public List<List<Integer>> list = new ArrayList();
    13     public List<List<Integer>> pathSum(TreeNode root, int sum) {
    14         if(root == null) return list;
    15         
    16         List<Integer> llist = new ArrayList();
    17         path(root, sum, llist);
    18         return list;
    19     }
    20     
    21     public void path(TreeNode root, int sum, List<Integer> llist){
    22         if(root.left==null && root.right==null){
    23             if(root.val==sum){
    24                 llist.add(sum);
    25                 list.add(llist);
    26             }
    27             return;
    28         }
    29         if(root.right!=null){
    30             List<Integer> rlist = new ArrayList();
    31             for(Integer i : llist){
    32                 rlist.add(i);
    33             }
    34             rlist.add(root.val);
    35             path(root.right, sum - root.val, rlist);
    36         }
    37         if(root.left!=null){
    38             llist.add(root.val);
    39             path(root.left, sum - root.val, llist);
    40         }
    41     }
    42 }
  • 相关阅读:
    java架构之路-(面试篇)Mysql面试大全
    web工程的路径问题详解
    SQL知识点总结
    Mybatis简介
    mysql大全
    配置心得
    spring4.1.3+springmvc+mybatis3.2.1整合
    jstl标签
    jstl标签库
    Java并发控制机制
  • 原文地址:https://www.cnblogs.com/liujinhong/p/5455368.html
Copyright © 2020-2023  润新知