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


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

    首先我们应该考虑用什么样的数据结构,既然存路径那么需要用队列,每一个路径就是一个队列,再用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;
    }
    }

  • 相关阅读:
    sharepoint权限操作(记录以备忘)
    python-----利用filecmp删除重复文件
    python-----自动解压并删除zip文件
    python-----文件自动归类
    python-----模糊搜索文件
    python-----查看显卡gpu信息
    python-----判断文件是否存在
    git 查看、切换用户
    PyCharm创建文件时自动添加头文件
    python-----监控博客园积分动态,有变化发邮件通知
  • 原文地址:https://www.cnblogs.com/ScarecrowAnBird/p/6729337.html
Copyright © 2020-2023  润新知