LeetCode 112. Path Sum
2016-07-22 01:56
423 查看
112. Path Sum
My Submissions QuestionEditorial Solution
Total Accepted: 99234 Total Submissions: 317747 Difficulty: Easy
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
For example:
Given the below binary tree and sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.
My Submissions QuestionEditorial Solution
Total Accepted: 99234 Total Submissions: 317747 Difficulty: Easy
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
For example:
Given the below binary tree and sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.
递归方法: /** * 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 { public: bool hasPathSum(TreeNode* root, int sum) { if(root == NULL) return false; if(root->left == NULL && root->right == NULL && sum == root->val) return true; if(hasPathSum(root->left, sum - root->val) || hasPathSum(root->right, sum - root->val)) return true; else return false; } }; 非递归法 /** * 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 { public: bool hasPathSum(TreeNode* root, int sum) { queue<TreeNode *> q; if(root == NULL) return false; q.push(root); TreeNode *temp; while(!q.empty()) { int size = q.size(); while(size--) { temp = q.front(); q.pop(); if(temp->left != NULL) { q.push(temp->left); temp->left->val += temp->val; } if(temp->right != NULL) { q.push(temp->right); temp->right->val += temp->val; } if(temp->left == NULL && temp->right == NULL && (temp->val == sum || temp->val == sum)) { return true; } } } return false; } };
相关文章推荐
- 【POJ 2528】Mayor’s posters(线段树+离散化)
- HDU5735 : Born Slippy
- LeetCode 160. Intersection of Two Linked Lists
- java lisi乱序、排序
- LeetCode 219. Contains Duplicate II
- LeetCode 88. Merge Sorted Array
- Java字符串工具类(未测试)
- LeetCode 205. Isomorphic Strings
- LeetCode 223. Rectangle Area
- LeetCode 299. Bulls and Cows
- 算法--列(java实现)
- 判断滚动条到底部的JS代码
- LeetCode 190. Reverse Bits
- LeetCode 20. Valid Parentheses
- 50个必备的实用jQuery代码段
- 12个用得着的JQuery代码片段
- LeetCode 19. Remove Nth Node From End of List
- LeetCode 290. Word Pattern
- LeetCode 58. Length of Last Word
- 统计项目源码行数的Java代码