LeetCode 437 Path Sum III
来源:互联网 发布:淘宝怎么寄售游戏币 编辑:程序博客网 时间:2024/05/21 22:52
You are given a binary tree in which each node contains an integer value.
Find the number of paths that sum to a given value.
The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).
The tree has no more than 1,000 nodes and the values are in the range -1,000,000 to 1,000,000.
Example:
root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 10 / \ 5 -3 / \ \ 3 2 11 / \ \3 -2 1Return 3. The paths that sum to 8 are:1. 5 -> 32. 5 -> 2 -> 13. -3 -> 11
public int pathSum(TreeNode root, int sum) {return dfspathSum(root, sum) + pathSum(root.left, sum) + pathSum(root.right, sum);}public int dfspathSum(TreeNode root, int sum) {int result = 0;if (root == null) return result;if (sum == root.val) result++;result += dfspathSum(root.left, sum - root.val);result += dfspathSum(root.right, sum - root.val);return result;}
下面的更有效率,19ms,而上面的38ms
int count = 0;public int pathSum2(TreeNode root, int sum) {int n = findDepth(root);int[] path = new int[n];findSum(root, sum, path, 0);return count;}int findDepth(TreeNode root) {if (root == null) return 0;return Math.max(findDepth(root.left), findDepth(root.right)) + 1;}void findSum(TreeNode root, int sum, int[] path, int level) {if (root == null) return;path[level] = root.val;int total = 0;for (int i = level; i >= 0; i--) {total += path[i];if (total == sum) {count = count + 1;}}findSum(root.left, sum, path, level + 1);findSum(root.right, sum, path, level + 1);path[level] = Integer.MIN_VALUE;}
0 0
- LeetCode 437 Path Sum III
- leetcode-437-Path Sum III
- leetcode#437 Path Sum III
- LeetCode 437 Path Sum III
- LeetCode-Path Sum III
- path sum iii-leetcode
- Path Sum III ---LeetCode
- Leetcode | Path Sum III
- Leetcode Path Sum III
- LEETCODE--Path Sum III
- LeetCode -- Path Sum III
- LeetCode : Path Sum III
- LeetCode 437 Path Sum III (DFS)
- LeetCode No.437 Path Sum III
- LeetCode #437 - Path Sum III - Medium
- LeetCode 437 Path Sum III 题解
- [python]leetcode(437). Path Sum III
- LeetCode 437. Path Sum III
- Android开发04_ContentProvider内容提供者
- Write code that is easy to delete, not easy to extend.
- Android百度地图开发(一)之Hello BaiduMap
- 排序算法(三) - 交换排序
- scala程序写Spark程序实现黑名单过滤
- LeetCode 437 Path Sum III
- java 一键部署war包,jar包
- CentOS 7 + Apache 2.4 + Flask 0.11 + Python 3.4 + Virtualenv配置过程
- Android系统init.rc分析
- 6大排序算法总结
- 通过 GitHub 的 API 获取代码
- [Mapbox GL]展示一张地图
- 毕业生自传----终成正果
- 批量更换图片