二叉树中和为某一值的路径
来源:互联网 发布:淘宝晒单福利图2000p 编辑:程序博客网 时间:2024/06/06 09:33
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径
import java.util.ArrayList;//import java.util.Stack;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*///需要注意的是递归函数的参数传递,如果是在FindPathCore函数中定义curResult和curSum时,不传入该函数的话,它的下一级递归函数是无法看到这两个值的public class Solution { public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) { //定义result用于存储找到的所有符合条件的路径 ArrayList<ArrayList<Integer>> result=new ArrayList<>(); ArrayList<Integer> curResult=new ArrayList<>(); if(root==null){ return result; } int curSum=0; FindPathCore(root,target,curResult,result,curSum); return result; } private void FindPathCore(TreeNode root,int target,ArrayList<Integer> curResult,ArrayList<ArrayList<Integer>> result,int curSum){ if(root==null){ return; } boolean isLeaf=(root.left==null&&root.right==null); curSum+=root.val; //如果让前节点是叶子节点 if(isLeaf){ if(curSum==target){ curResult.add(root.val); result.add(new ArrayList<Integer>(curResult)); //路径中取出该叶子节点 curResult.remove(curResult.size()-1); } //返回上层节点,并从当前路径和中减去该叶子节点 curSum-=root.val; return; } curResult.add(root.val); FindPathCore(root.left,target,curResult,result,curSum); FindPathCore(root.right,target,curResult,result,curSum); curResult.remove(curResult.size()-1); }}
阅读全文
0 0
- 【树】二叉树中和为某一值的路径
- 【树6】二叉树中和为某一值的路径
- 题目11:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的所有路径
- 题目1368:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 1368:二叉树中和为某一值的路径 @jobdu
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- Q25:二叉树中和为某一值的路径
- 剑指offer:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径(剑指offer25)
- 中频滤波器和镜像抑制滤波器
- 28个Github上最火的机器学习开源项目
- 两对象间的属性复制
- Java学习路线
- 使用Jenkins配置Git+Maven的自动化构建
- 二叉树中和为某一值的路径
- 如何控制使用thymeleaf不在控制台打印日志
- Spark Streaming整合Kafka(一)
- 基于asp.net + easyui框架——实现添加、编辑、删除(三)
- 使用Gson解析json在打包混淆时出错的解决方法
- C#基础知识点(二)
- Hibernate与 MyBatis的比较
- img水平垂直居中
- 每日一练(20171109)