• N24_二叉树中和为某一路径


    题目描述(此题多看 有点难理解)

    输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
    package new_offer;
    /**
     * 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。
     * 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
     * (注意: 在返回值的list中,数组长度大的数组靠前)
     * @author Sonya
     *递归完成,判断某一节点是否为叶节点,在叶节点时,判断此路径是否符合要求 不符合要求则中断
     *非叶节点时 对其左右子树进行递归上述判断。
     */
    import java.util.ArrayList;
    /**
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
        public TreeNode(int val) {
            this.val = val;
        }
    }
    */
    public class N24_RargetOfFindPath {
    	
        
      //  ArrayList<Integer> list=new ArrayList<Integer>();
    	public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
    		ArrayList<ArrayList<Integer>> paths=new ArrayList<ArrayList<Integer>>();
    		if (root==null) return paths;
    		find(paths,new ArrayList<Integer>(),root,target);
    		return paths;
            
        }
    	public void find(ArrayList<ArrayList<Integer>> paths, ArrayList<Integer> path,TreeNode root,int target) {
    		path.add(root.val);
    		if(root.left==null&&root.right==null) {//是叶节点
    			if(root.val==target) {paths.add(path);}// 如果和满足要求 则将此路径添加到paths中
    			return;//不符合要求则返回
    		}
    		ArrayList path2=new ArrayList<Integer>();
    		path2.addAll(path);
    		if(root.left!=null)find(paths,path,root.left,target-root.val);
    		if(root.right!=null)find(paths,path2,root.right,target-root.val);
    		
    	}
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    	}
    
    }
    

      

  • 相关阅读:
    学习ASP.NET Core Blazor编程系列一——综述
    PHPExcel插件生成exel表:有的excel能打开,有的excel打不开
    测试架构师如何落地性能测试方案(二)
    pytest数据驱动 pandas
    测试开发工程师到底是做什么的?
    什么是测试架构师(经验总结)
    测试架构师CAP原理(最简单)
    测试开发mysql性能调优总结(一)
    测试开发HTTP请求过程(一)
    pytest数据驱动(最简单)
  • 原文地址:https://www.cnblogs.com/kexiblog/p/11127021.html
Copyright © 2020-2023  润新知