Leetcode: Path Sum
来源:互联网 发布:c语言if else语句成绩 编辑:程序博客网 时间:2024/06/05 05:25
Get idea from Code Ganker′s Solution
Question
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.
Hide Tags Tree Depth-first Search
Analysis
depth-first search
There are two cases we need to consider:
1. node has only one child
2. node(leaf) has two children.
Solution
Mistake Taken
This solution will give a error case. if tree only has leftmost branch, and the sum of the first several nodes are equal to target. This solution will return True, not False.
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # @param {TreeNode} root # @param {integer} sum # @return {boolean} def hasPathSum(self, root, sum): if root==None: return False if root.left==None: return self.helper(root.right,sum-root.val) elif root.right==None: return self.helper(root.left, sum-root.val) return self.helper(root,sum) def helper(self, root, sum): if root==None: if sum==0: return True else: return False return self.helper(root.left, sum-root.val) or self.helper(root.right, sum-root.val)
Correct Solution
The stop condition need to consider the None. There are only two cases involved None, discussed in Analysis
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # @param {TreeNode} root # @param {integer} sum # @return {boolean} def hasPathSum(self, root, sum): return self.helper(root,sum) def helper(self, root, sum): if root==None: return False if root.left==None and root.right==None and root.val==sum: return True return self.helper(root.left, sum-root.val) or self.helper(root.right, sum-root.val)
- leetcode Path Sum && Path Sum ||
- 【Leetcode】Path Sum (Sum)
- leetcode:leetcode :Path Sum
- 【Leetcode】Path Sum II (Sum)
- LeetCode: Minimum Path Sum
- LeetCode: Path Sum
- LeetCode: Path Sum II
- LeetCode Minimum Path Sum
- LeetCode Path Sum
- LeetCode Path Sum II
- [Leetcode] Path Sum
- [Leetcode] Path Sum II
- LeetCode : Minimum Path Sum
- [Leetcode] Minimum Path Sum
- LeetCode: Path Sum
- LeetCode: Path Sum II
- [LeetCode] Path Sum
- [LeetCode] Path Sum II
- 赋予oracle执行存储过程权限
- swing中JPanel如何实现分组框的效果以及设置边框颜色
- 如何开发Oracle存储过程
- BaseAdapter使用
- 欢迎使用CSDN-markdown编辑器
- Leetcode: Path Sum
- js基础知识汇总
- Git学习笔记
- Initializing Things in C#
- 返回键(基于Fragment)
- Android应用开发中如何使用RSA加密算法对数据进行校验
- Java Arrays类对数组的常用操作
- 只言片语
- 为什么要创建线程池