• 打印二叉树中所有分支之和等于某个数


    输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

    首先我们应该考虑用什么样的数据结构,既然存路径那么需要用队列,每一个路径就是一个队列,再用ArrayList<ArrayList<Integer>>包含符合条件的所有路径。

    步骤:1.从根开始先序遍历,然后与target做差 (判断<0直接舍弃该路径),等于0且是叶子节点输出路径。2.找到一个孩子(左孩子或右孩子)继续递归调用

    import java.util.*;
    public class suanfa2 {
    ArrayList<ArrayList<Integer>> paths = new ArrayList<ArrayList<Integer>>();
    public ArrayList<ArrayList<Integer>> SearchPath(TreeNode root, int target){
    if(root==null) return paths;
    //递归调用
    FindPath(root,target,new ArrayList<Integer>());
    return paths;
    }
    public void FindPath(TreeNode root, int target, ArrayList<Integer> path) {
    if(root == null) return ;
    target -=root.val;
    if(target<0) return ;
    path.add(root.val);
    if(root.left==null && root.right==null && target == 0){
    paths.add(path);
    return ;
    }
    //不是叶子节点继续向下遍历,拷贝一个路径
    ArrayList<Integer> path2=new ArrayList<>();
    path2.addAll(path);
    if(root.left != null){
    FindPath(root.left, target,path);
    }
    if(root.right !=null){
    FindPath(root.right, target,path2);
    }
    }
    }
    class TreeNode{
    int val=0;
    TreeNode left;
    TreeNode right;
    public TreeNode(int val){
    this.val = val;
    }
    }

  • 相关阅读:
    win10自带输入法突然变成了繁体
    Eclipse 包视图折叠
    Unknown column '字段名' in 'field list' 错误解决方案
    The method getContextPath() from the type HttpServletRequest
    Eclipse 设置新建文件默认编码为 utf-8 的方法
    Java 混淆器
    程序员,不能缺少的几张图
    北漂程序员,扬帆起航的地方
    数据是啥?数据都去哪儿了?
    7行代码搞定WEB服务
  • 原文地址:https://www.cnblogs.com/ScarecrowAnBird/p/6729337.html
Copyright © 2020-2023  润新知