Path Sum Total Accepted: 9765 Total Submissions: 32502 My Submissions
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.
这是我的代码:
主要的注意点是要考虑 root = NULL的情况
1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 bool hasPathSum(TreeNode *root, int sum) { 13 if (root == NULL) return false; 14 if (root->left == NULL and root->right == NULL) 15 return root->val == sum ? true : false; 16 if (root->left != NULL and hasPathSum(root->left, sum-(root->val))) 17 return true; 18 if (root->right != NULL and hasPathSum(root->right, sum-(root->val))) 19 return true; 20 return false; 21 } 22 };
这是我的Python代码:
1 class Solution: 2 # @param root, a tree node 3 # @param sum, an integer 4 # @return a boolean 5 def hasPathSum(self, root, sum): 6 if root is None: 7 return False 8 if root.left is None and root.right is None: 9 return True if root.val == sum else False 10 if root.left != None and self.hasPathSum(root.left, sum-(root.val)): 11 return True 12 if root.right != None and self.hasPathSum(root.right, sum-(root.val)): 13 return True 14 return False
Python的速度大约是C++的1/5到1/4