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

    import java.util.ArrayList;
    
    class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }
    
    public class Solution {
        ArrayList<Integer> path = new ArrayList<>();
        ArrayList< ArrayList<Integer> > list = new ArrayList< ArrayList<Integer> >();
        
        public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
            if(root == null) return list;
            //每访问到一个节点,都把当前的节点添加到路径中去,并调整target的值
            path.add(root.val);
            target -= root.val;
            //已到叶节点并且和为target,则把当前路径添加到输出列表里
            //因为add添加的是引用,如果不new一个的话,最终list保存到的知识最后一个path
            if(target == 0 && root.left == null && root.right==null)
                list.add(new ArrayList<Integer>(path));
            //否则继续遍历
            FindPath(root.left, target);
            FindPath(root.right, target);
            //已经到叶节点之后会跳过两个递归函数到这里,此时要把最后一个节点从路径中删除
            path.remove(path.size() - 1);
            return list;
        }
    }

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

    下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12

  • 相关阅读:
    awk线程号
    std::string::substr函数
    计数器表的简单使用
    vim + oh-my-zsh + git搭建开发环境
    <<代码大全>>阅读笔记之二 变量名的力量
    <<代码大全>>阅读笔记之一 使用变量的一般事项
    压测工具ab的简单使用
    nginx配置文件详解
    numba初体验
    Linux查找文件内容小技巧
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10343156.html
Copyright © 2011-2022 走看看