• 寻找二叉树的路径,使得路径和等于一个指定的整数


    思路:递归思想

     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 }
  • 相关阅读:
    Javascript 箭头函数2
    熊二周刊--20160911
    递归
    函数
    Python基本的数据类型内置方法(2)
    python 基础知识条件和循环
    Python初识_基本的数据类型
    计算机网络基础知识
    Python初识
    计算机基础-操作系统
  • 原文地址:https://www.cnblogs.com/bolianggufeng/p/8579400.html
Copyright © 2020-2023  润新知