• 【剑指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 }
  • 相关阅读:
    今天写一篇随想,也当是回顾过去,展望未来吧。
    推荐 Word、EXCEL必备工具箱
    elasticsearch Routing 路由详解
    Python学习之字典
    ES 分片和副本数 调整及数据写入、重建索引调优
    fastJson JSON.parseObject()丢失字符串原本顺序
    Python 列表(详)
    pycharm常用快捷键
    Python学习笔记二(列表)
    python学习笔记二
  • 原文地址:https://www.cnblogs.com/singular/p/10062594.html
Copyright © 2020-2023  润新知