leedcode-左叶子之和

自己写的,使用了经典的广度优先搜素(BFS):

class Solution:
    def sumOfLeftLeaves(self, root: Optional[TreeNode]) -> int:
        # 初始化队列,将根节点放入队列中
        queue = [root]
        # 初始化结果变量
        res = 0
        
        # 遍历队列,直到队列为空
        while queue:
            # 取出队列中的第一个节点
            cur = queue.pop(0)
            
            # 如果当前节点的左子节点存在
            if cur.left:
                # 将左子节点添加到队列中
                queue.append(cur.left)
                # 如果当前左子节点没有左子节点和右子节点(即为左叶子节点)
                if not cur.left.left and not cur.left.right:
                    # 将左叶子节点的值加到结果中
                    res += cur.left.val
            
            # 如果当前节点的右子节点存在
            if cur.right:
                # 将右子节点添加到队列中
                queue.append(cur.right)
        
        # 返回左叶子节点的和
        return res

 

posted @ 2024-04-23 13:59  Junior_bond  阅读(26)  评论(0)    收藏  举报