Python 求二叉树所有左叶节点的和

2016-11-11 11:18:37 +08:00
 woostundy
python

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def sumOfLeftLeaves(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        if root is None or self.isleaf(root):
            return 0
        if self.isleaf(root.left):
            return root.left.val + self.sumOfLeftLeaves(root.right)
        else:
            return self.sumOfLeftLeaves(root.left) + self.sumOfLeftLeaves(root.right)
        
    def isleaf(self,root):
        return root.left is None and root.left is None

原题地址是 https://leetcode.com/problems/sum-of-left-leaves/ 求解,这段代码哪里写错了?

3175 次点击
所在节点    Python
7 条回复
billgreen1
2016-11-11 11:24:14 +08:00
按我的理解, left leaves != left node

~~~python
def is_leaf(self, node):
return node is not None and node.left is None and node.right is None
woostundy
2016-11-11 11:36:06 +08:00
@billgreen1 是的,求的是所有左叶节点的和。
node is not None 的判断在最开始就做了。

错误样例是
[0,2,4,1,null,3,-1,5,1,null,6,null,8]
算这个的时候错了
zmrenwu
2016-11-11 11:41:05 +08:00
他不是要你算左叶子节点么?你的代码包含了非叶子节点在里面
yonka
2016-11-11 11:52:21 +08:00
return root.left is None and root.left is None

看了好几遍不知道在干嘛。
难道不是 return root is not None and root.left is None and root.right is None 吗?
woostundy
2016-11-11 11:56:04 +08:00
@yonka 我擦,看出来了,把第二个自判断也写成 left 了。。
晕,太马虎了
woostundy
2016-11-11 11:56:31 +08:00
@billgreen1 是我发现写错了。多谢多谢
doraemon1293
2016-11-11 18:40:35 +08:00
def isleaf(self,root):
return root.left is None and root.left is None 不应该是 right 吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/319779

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX