zoukankan      html  css  js  c++  java
  • 【剑指offer】求树中满足和为给定数字的路径

    题目: 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)

    *思路(借鉴牛客网友):实质还是树的遍历。在递归的过程中,使用ArrayList记录下路径。

    *注意:因为使用了变量记录递归调用处理的当前结点,每当递归调用回退至上一层时,需要将记录中的结点也回退一层,使得两者一致。

     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     private ArrayList<Integer> list = new ArrayList<Integer>();
    17     private ArrayList<ArrayList<Integer>> results =  new ArrayList<ArrayList<Integer>>();
    18     public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
    19         if(root==null) return results;
    20         list.add(root.val);
    21         target -= root.val;
    22         if(target==0&&root.left==null&&root.right==null){
           //这里不能直接将list加入results,因为对于results来说list是同一个元素(引用没有变化过),直接加入同样的list会导致后加入的覆盖掉之前的.
    23 results.add(new ArrayList<Integer>(list)); 24 } 25 FindPath(root.left, target); 26 FindPath(root.right, target);
          //一次调用结束前,将记录的结点回退一层
    27 list.remove(list.size()-1); 28 return results; 29 } 30 }
  • 相关阅读:
    1,巡检脚本pexpect
    Cisco胖AP配置上网
    阿里云服务器更换密钥后,无论以何种远程连接方式都连接不上
    [PAT乙级题解]——A+B和C
    研究ThreadLocal类
    Java的反射机制
    volatile浅析
    Java 对称数据加密AES
    Java使用非对称数据加密RSA
    练习-登陆接口
  • 原文地址:https://www.cnblogs.com/singular/p/10062594.html
Copyright © 2011-2022 走看看