在二叉树中找到累加和为指定值的最长路径长度
来源:互联网 发布:淘宝儿童服装拍摄 编辑:程序博客网 时间:2024/06/04 18:20
import java.util.*;//在二叉树中找到累加和为指定值的最长路径长度public class SumMaxLen{//二叉树节点的定义public static class Node{public int value;public Node left;public Node right;public Node(int data){this.value=data;}} //获取指定值的最长路径长度 public static int sumMaxLen(Node head,int sum) { //存储当前节点最长路径值和所在的层数 HashMap<Integer,Integer>sumMap=new HashMap<Integer,Integer>(); sumMap.put(0,0);//没有遍历节点 return preOrder(head,sum,0,1,0,sumMap); } //利用二叉树前序遍历 public static int preOrder(Node head,int sum,int preSum,int level ,int maxLen,HashMap<Integer,Integer>sumMap) { if(head==null) { return maxLen; //记录其中的最大值 } //当前节点的最大值计算 int curSum=preSum+head.value; //集合中不存在当前值 if(!sumMap.containsKey(curSum)) { sumMap.put(curSum,level); } //更新最大长度 if(sumMap.containsKey(curSum-sum)) { //取两者的最大值 maxLen=Math.max(level-sumMap.get(curSum-sum),maxLen); } //递归调用 maxLen=preOrder(head.left,sum,curSum,level+1,maxLen,sumMap); //左子树 maxLen=preOrder(head.right,sum,curSum,level+1,maxLen,sumMap); //右子树 if(level==sumMap.get(curSum)) { sumMap.remove(curSum); } return maxLen; } public static void main(String[]args) { /** -3 3 -9 1 0 2 1 1 6 */ Node node =new Node(-3); node.left=new Node(3); node.right=new Node(-9); node.left.left=new Node(1); node.left.right=new Node(0); node.right.left=new Node(2); node.right.right=new Node(1); node.left.right.left=new Node(1); node.left.right.right=new Node(6); System.out.println("最长路径为:"+sumMaxLen(node,6)); System.out.println("最长路径为:"+sumMaxLen(node,-9)); }}
阅读全文
0 0
- 在二叉树中找到累加和为指定值的最长路径长度
- 在二叉树中找到累加和为指定值的最长路径长度
- 在二叉树中找到累加和为指定值的最长路径长度
- 二叉树问题---在二叉树中找到累加和为指定值的最长路径长度
- 二叉树系列---找到累加和为指定值的最长路径长度
- 数组与矩阵---未排序正数数组中累加和为指定值的最长子数组长度
- 未排序正数数组中累加和为给定值的最长子数组长度
- 求:未排序数组中累加和为给定值的最长子数组长度
- 未排序正数数组中累加和为给定值的最长子数组长度
- 数组中累加和为定值K的最长子数组长度
- 未排序正整数数组中累加和为给定值的最长子数组长度
- 在未排序数组中找到和为k的最长子数组长度
- 数组中累加和为k的最长子数组长度(算法)
- 找出二叉树中所有累加值为给定值的路径
- 求二叉树中结点值的和为指定整数的所有路径
- 未排序数组中累加和小于给定值的最长子数组长度
- 未排序数组中累加和小于或等于给定值的最长子数组长度
- 二元查找树-- 在二元树中找到和为某一值的所有路径
- Linux的文件权限和目录配置
- 【转载】Linux Shell之四 算术运算
- android学习杂记.13
- 2017上半年技术文章集合—184篇文章分类汇总
- SGI STL空间配置器详解(一)-第一级空间配置器
- 在二叉树中找到累加和为指定值的最长路径长度
- 血的教训
- Nettty入门(一)
- @SessionAttributes与@ResponseBody同时使用的问题
- Java集合(四)HashMap详解
- pp助手安装本地ipa应用程序
- 设计模式之禅5
- 如何使用echo指令向文件写入内容
- MyEclipse 基于SSM 创建 Web项目-CRM+商城(Maven+SVN)之一、环境搭建(Maven+SVN)