zoukankan      html  css  js  c++  java
  • 根节点到叶子节点路径之和为target

    //递归吧,但是在递归到底的条件上要判断好,比如说完整路径是到叶子节点,也就是说左右子节点都为空,并且这时候的root.val==target表示找到了一个list,再返回。

    但是因为我并没有直接就用target-root.val,所以在有些情况下,比如说遇到一个null节点的时候,我们不能直接返回,需要给这个list加一个值,因为返回到上一层之后我们会remove掉list中的最后一个元素,所以我们每次递归的时候都要给list加一个元素,不然返回到上一层的时候节点元素对不上,这是一个要注意的点,

    还有就是如果它不是叶子节点,并且这时候的root.val>=target了,也就是下面那个else,我们就可以不继续递归下去了,直接返回就可以了,

    **或者说你可以上来就直接把val值给弄掉,这样有的时候就不需要给list加一个无关紧要的值了,但是这个结束就是target==0了。

     1 import java.util.ArrayList;
     2 /**
     3 public class TreeNode {
     4     int val = 0;
     5     TreeNode left = null;
     6     TreeNode right = null;
     7 
     8     public TreeNode(int val) {
     9         this.val = val;
    10 
    11     }
    12 
    13 }
    14 */
    15 public class Solution {
    16     ArrayList<ArrayList<Integer>> res=new ArrayList<>();
    17     public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
    18         ArrayList<Integer> list=new ArrayList<>();
    19         if(root==null)
    20             return res;
    21         helper(root,target,list);
    22         return res;
    23     }
    24     public void helper(TreeNode root, int target,ArrayList<Integer> list)
    25     {
    26          if(root==null)
    27           {
    28             list.add(0);
    29              return ;
    30          }
    31         if(root.left==null&&root.right==null)
    32         {
    33             if(root.val==target)
    34             {
    35                 list.add(root.val);
    36                 res.add(new ArrayList<Integer>(list));
    37                 return ;
    38             }
    39             else
    40                 {
    41                 list.add(0);
    42                  return ;
    43          }
    44         }
    45         if(root.val<target)
    46         {
    47             list.add(root.val);
    48             helper(root.left,target-root.val,list);
    49             list.remove(list.size()-1);
    50             helper(root.right,target-root.val,list);
    51             list.remove(list.size()-1);
    52         }
    53         else
    54             {
    55                 list.add(0);
    56                 return ;
    57         }
    58         return ;
    59         
    60     }
    61 }
  • 相关阅读:
    织梦开发——相关阅读likeart应用
    织梦标签教程
    织梦专题调用代码
    HIT 2543 Stone IV
    POJ 3680 Intervals
    HIT 2739 The Chinese Postman Problem
    POJ 1273 Drainage Ditches
    POJ 2455 Secret Milking Machine
    SPOJ 371 Boxes
    HIT 2715 Matrix3
  • 原文地址:https://www.cnblogs.com/cold-windy/p/11546936.html
Copyright © 2011-2022 走看看