二叉树中和为某一值的路径
来源:互联网 发布:exe 端口 编辑:程序博客网 时间:2024/04/28 21:12
一、题目描述
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
二、解题思路
用递归和二叉树的前序遍历(需要先遍历根节点)。
三、Java代码实现
package jianzhioffer;import java.util.ArrayList;class TreeNode{ int val; TreeNode left; TreeNode right; TreeNode(int val){ this.val = val;}}public class FindPath { public static void main(String[] args){ } public static ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target){ ArrayList<ArrayList<Integer>> allPath = new ArrayList<ArrayList<Integer>>(); if(root == null) return allPath; int current = 0; ArrayList<Integer> path = new ArrayList<Integer>(); FindPath(root, allPath, path, target, current); return allPath; } public static void FindPath(TreeNode root, ArrayList<ArrayList<Integer>> allPath, ArrayList<Integer> path, int target, int current) { current +=root.val; //目前路径的长度和 path.add(root.val); //目前路径的队列 boolean isLeaf = (root.left == null) && (root.right == null); if((current == target) && isLeaf) { allPath.add(new ArrayList<Integer>(path)); } if(root.left != null) FindPath(root.left, allPath, path, target, current); if(root.right!= null) FindPath(root.right, allPath, path, target, current); //返回父结点之前,在路径上删除当前结点 path.remove(path.size() -1);//这步容易忘 } }
0 0
- 【树】二叉树中和为某一值的路径
- 【树6】二叉树中和为某一值的路径
- 题目11:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的所有路径
- 题目1368:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- 1368:二叉树中和为某一值的路径 @jobdu
- 二叉树中和为某一值的路径
- 二叉树中和为某一值的路径
- Q25:二叉树中和为某一值的路径
- 剑指offer:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径(剑指offer25)
- Android设置控件的透明度(半透明效果)
- c语言-指针 const解析
- 部署Heoku
- JSP+Servlet实现文件上传
- mybatis多次查询缓存问题
- 二叉树中和为某一值的路径
- li 的圆点失效
- cocos2d - JS H5 适配流程
- HashMap源码解析
- FreeCMS视频教程 站点、栏目、信息自定义字段的使用
- 文章标题
- Python正则表达式指南
- NPAPI脚本化接口
- Manacher 算法