首页 > 其他分享 >leedcode-左叶子之和

leedcode-左叶子之和

时间:2024-04-23 14:00:27浏览次数:33  
标签:左子 queue cur 队列 leedcode 叶子 节点 left

自己写的,使用了经典的广度优先搜素(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

 

标签:左子,queue,cur,队列,leedcode,叶子,节点,left
From: https://www.cnblogs.com/yyyjw/p/18152735

相关文章

  • leedcode-二进制手表
    自己写的,调用了combinations函数:fromitertoolsimportcombinationsfromtypingimportListclassSolution:defreadBinaryWatch(self,turnedOn:int)->List[str]:#可以表示小时的LED灯,对应的值分别是1,2,4,8hour_list=[1,2,4,8]#......
  • 树2-二叉树拷贝, 遍历, 计算叶子结点和高度
    树2-二叉树拷贝,遍历,计算叶子结点和高度二叉树结点typedefstructBinaryNode{charch;structBinaryNode*lChild;structBinaryNode*rChild;}BinaryNode;//叶子结点的数量intsum;二叉树遍历前序//递归遍历(前序)voidRecursion(BinaryNode*roo......
  • leedcode-判断子序列
    自己写的,有点麻烦classSolution:defisSubsequence(self,s:str,t:str)->bool:#第一步先验证s是t的无序子序列#使用字典记录t中每个字符的出现次数mydict=dict()foriint:ifnotmydict.get(i):......
  • leedcode-字符串中的第一个唯一字符
    自己写的,easyclassSolution:deffirstUniqChar(self,s:str)->int:mydict={}#创建一个空字典来存储每个字符的出现次数foriins:#遍历给定的字符串sifnotmydict.get(i):#如果当前字符不在字典中mydic......
  • leedcode-猜数字大小
    classSolution:defguessNumber(self,n:int)->int:i=1#初始猜测数为1flag=True#设置一个标志,用于控制循环#第一部分:使用倍增法寻找一个大于目标数字的边界值whileflag:#使用guess函数来判断......
  • leedcode-
    用二分法查找平方根:classSolution:defisPerfectSquare(self,num:int)->bool:#初始化左右边界left=1right=num#开始二分查找whileleft<=right:#计算中间值mid=left+(......
  • leedcode-两个数组的交集
    自己写的:fromtypingimportList#导入List类型,用于函数参数和返回类型的注解classSolution:defintersection(self,nums1:List[int],nums2:List[int])->List[int]:#初始化一个空列表,用于存储两个列表的交集mylist=[]#遍历num......
  • leedcode-反转字符串中的元音字母
    自己写的,双指针,一次通过classSolution:defreverseVowels(self,s:str)->str:#将输入的字符串转换为列表s_list=list(s)#定义元音字母列表vowels=['a','e','i','o','u','A&......
  • leedcode-反转字符串
    自己写的,这么简单?fromtypingimportListclassSolution:defreverseString(self,s:List[str])->None:n=len(s)#获取字符串列表的长度#使用双指针法来反转字符串#初始化指针i指向字符串开头,指针j指向字符串结尾......
  • leedcode-比特位计数
    自己写的:fromtypingimportListclassSolution:defcountBits(self,n:int)->List[int]:#创建一个空列表来存储结果result=[]#循环遍历从0到n的所有数字foriinrange(n+1):#将当前数字转换为二进制表示......