LeetCode "437. Path Sum III"
2017-01-28 14:44
513 查看
The punch line of this one: sum of leaves: pi..pj = root..pj - root..pi.
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { int ret; void go(TreeNode *p, int sofar, int tgt, unordered_map<int, unsigned> rec) { if(!p) return; sofar += p->val; if(sofar == tgt) { ret ++; // case 1 : from root } int t = sofar - tgt; if(rec.find(t) != rec.end()) { ret += rec[t]; } rec[sofar] ++; go(p->left, sofar, tgt, rec); go(p->right,sofar, tgt, rec); } public: int pathSum(TreeNode* root, int sum) { ret = 0; if(!root) return 0; go(root, 0, sum, unordered_map<int, unsigned>()); return ret; } };
相关文章推荐
- leetcode(437):Path Sum III
- LeetCode 437 Path Sum III 题解
- leetcode[437] PathSum III 个人题解
- leetcode-437-Path Sum III
- [python]leetcode(437). Path Sum III
- LeetCode 437 Path Sum III (DFS)
- LeetCode 437 Path Sum III
- LeetCode 437 Path Sum III
- leetcode 437. Path Sum III
- 437. Path Sum III
- [LeetCode]437. Path Sum III
- [leetcode] 437. Path Sum III 解题报告
- 【LeetCode】 437. Path Sum III
- LeetCode 437. Path Sum III 题解 和固定的二叉树路径数目
- 437. Path Sum III
- 437. Path Sum III
- Leetcode-437. Path Sum III
- Leetcode 437. Path Sum III (Easy) (cpp)
- LeetCode 437. Path Sum III
- 437. Path Sum III