zoukankan      html  css  js  c++  java
  • 剑指Offer:二叉树中和为某一值的路径【34】

    剑指Offer:二叉树中和为某一值的路径【34】

    题目描述

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

    题目分析

      

    Java题解

    package tree;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class FindPath {
        private static ArrayList<ArrayList<Integer>> pathList = new ArrayList<>();
    
        public static void main(String[] args) {
            TreeNode t1 = new TreeNode(1);
            TreeNode t2 = new TreeNode(2);
            TreeNode t3 = new TreeNode(3);
            TreeNode t4 = new TreeNode(4);
            TreeNode t5 = new TreeNode(5);
            TreeNode t6 = new TreeNode(3);
            t1.left=t2;
            t1.right=t3;
            t2.left=t4;
            t2.right=t5;
            t3.left=t6;
            FindPath(t1,7);
        }
    
        public static ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target) {
            if(root==null)
                return pathList;
            FindPathCore(root,target,new ArrayList());
            return pathList;
        }
    
        public static void FindPathCore(TreeNode root,int target,ArrayList list)
        {
            if(root==null)
                return;
    
            list.add(root.val); //先序遍历,先把值加上
    
            //如果此处是叶子节点,我们再判断值
            if(root.left==null&&root.right==null)
            {
                if(target==root.val)
                    pathList.add(list);
                return;
            }
            //这里要分路了
            ArrayList<Integer> list2 = new ArrayList<>();
            list2.addAll(list);
            if(root.left!=null)
                FindPathCore(root.left,target-root.val,list2);
            if(root.right!=null)
                FindPathCore(root.right,target-root.val,list);
    
        }
    }
    

      

     

  • 相关阅读:
    Shell变量、函数
    Shell
    springMVC基础讲解
    Spring(二)--IoC&AOP
    Spring(一)--简介
    Mybatis(二)--SqlMapConfig.xml配置文件
    Mybatis(一)--简介
    框架的介绍
    博文推荐 | 下一代消息平台 Pulsar 到底是什么
    Pulsar 2.7.0 新增特性概览:事务支持、Topic 级别策略配置等
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9284005.html
Copyright © 2011-2022 走看看