在二叉树中找到累加和为指定值的最长路径长度
来源:互联网 发布:linux设置静态ip 编辑:程序博客网 时间:2024/05/20 15:59
在二叉树中找到累加和为指定值的最长路径长度
给定一棵二叉树的头节点 head 和一个 32 位整数 sum,二叉树节点值类型为整型,求累加和为 sum 的最长路径长度。路径是指从某个节点往下,每次最多选择一个孩子节点或者不选所形成的节点链。
给定一棵二叉树的头节点 head 和一个 32 位整数 sum,二叉树节点值类型为整型,求累加和为 sum 的最长路径长度。路径是指从某个节点往下,每次最多选择一个孩子节点或者不选所形成的节点链。
额外空间复杂度为 O(h),h 为二叉树的高度。
public static int getMaxLength(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.containsKeu(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;}
阅读全文
0 0
- 在二叉树中找到累加和为指定值的最长路径长度
- 在二叉树中找到累加和为指定值的最长路径长度
- 在二叉树中找到累加和为指定值的最长路径长度
- 二叉树问题---在二叉树中找到累加和为指定值的最长路径长度
- 二叉树系列---找到累加和为指定值的最长路径长度
- 数组与矩阵---未排序正数数组中累加和为指定值的最长子数组长度
- 未排序正数数组中累加和为给定值的最长子数组长度
- 求:未排序数组中累加和为给定值的最长子数组长度
- 未排序正数数组中累加和为给定值的最长子数组长度
- 数组中累加和为定值K的最长子数组长度
- 未排序正整数数组中累加和为给定值的最长子数组长度
- 在未排序数组中找到和为k的最长子数组长度
- 数组中累加和为k的最长子数组长度(算法)
- 找出二叉树中所有累加值为给定值的路径
- 求二叉树中结点值的和为指定整数的所有路径
- 未排序数组中累加和小于给定值的最长子数组长度
- 未排序数组中累加和小于或等于给定值的最长子数组长度
- 二元查找树-- 在二元树中找到和为某一值的所有路径
- 浏览器缓存控制
- JVM
- 正则表达式学习笔记
- 微信小程序开发之真机测试 地图定位 map API 无法获取当前位置的问题
- angualr操作dom
- 在二叉树中找到累加和为指定值的最长路径长度
- 数据仓库技术的简单阐述
- TabLayout设置下划线(Indicator)长度
- 我的android异常系列——Fragment XXX not attached to Activity
- jquery 国际化使用
- 纯java项目使用hibernateSessionFactory访问数据库
- ftp文件上传下载
- LeetCode
- 运动框架和隐藏边框