zoukankan      html  css  js  c++  java
  • 寻找二叉树的路径,使得路径和等于一个指定的整数

    思路:递归思想

     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>> result=new ArrayList<ArrayList<Integer>>();//最终结果
    17     ArrayList <Integer> tmp=new ArrayList<Integer>();
    18     int sum=0;//统计累加和
    19     public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
    20         if(root==null) return result;//此句不反悔 说明根节点不为空
    21         sum=sum+root.val;
    22         tmp.add(root.val);
    23         if(root.left==null&&root.right==null&&sum==target){//得到目标路径之一   将目标路径添加到结果集
    24             ArrayList<Integer>path=new ArrayList<Integer>();
    25             for(int i=0;i<tmp.size();i++){
    26                 path.add(tmp.get(i));
    27             }
    28             result.add(path);
    29             //return result;  此处不能加return  否则在成功找到一条路径后 不能回退到父节点
    30         }
    31         if(sum<target&&root.left!=null)FindPath(root.left,target);
    32         if(sum<target&&root.right!=null)FindPath(root.right,target);
    33         //到达叶子节点或者累加值大于目标和
    34         sum=sum-root.val;//去掉该节点   回退到父节点
    35         tmp.remove(tmp.size()-1);
    36         return result;
    37     }
    38 }
  • 相关阅读:
    linux
    java对象结构
    jvm之java类加载机制和类加载器(ClassLoader)的详解
    二进制运算符及补码
    java导出word格式的文件
    rpm命令详解
    word转pdf
    应用缓存
    fullPage.js+Stellar.js+circlr.js
    评分案例
  • 原文地址:https://www.cnblogs.com/bolianggufeng/p/8579400.html
Copyright © 2011-2022 走看看