zoukankan      html  css  js  c++  java
  • 剑指offer——二叉树中和为某一值的路径

    题目描述

    输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
    考察点:
    1.复杂问题简单化,即由一个简单实例分析确定求解步骤
    2.前序遍历的概念(根--》左叶子--》右叶子)
     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<ArrayList<Integer>> listAll = new ArrayList<ArrayList<Integer>>();
    17     private ArrayList<Integer> list = new ArrayList<Integer>();
    18     //如果放在里面的话每次递归的时候就会重新new一个listALL和list,这样会把上一步的结果覆盖,所以必须写在外面
    19     public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
    20         if(root == null) return listAll;
    21         list.add(root.val);
    22         target -= root.val;
    23         if(target == 0&&root.left == null&& root.right == null)
    24             listAll.add(new ArrayList<Integer>(list));//不重新new的话从始至终listAll中所有引用都指向了同一个一个list
    25         FindPath(root.left,target);
    26         FindPath(root.right,target);
    27         list.remove(list.size()-1);//移除最后一个元素,深度遍历完一条路径后要回退
    28         return listAll;        
    29     }
    30 }
  • 相关阅读:
    k8s默认调度器常见调度算法解析
    K8s集群相关证书
    flannel overlay网络浅析
    Pod挂载LocalStoragePv过程理解
    k8s开发实践
    Flex布局【弹性布局】学习
    python中的技巧——杂记
    Tarjan + bfs HYSBZ 1179Atm
    POJ1988 Cube stacking(非递归)
    将博客搬至CSDN
  • 原文地址:https://www.cnblogs.com/10081-AA/p/11116815.html
Copyright © 2011-2022 走看看