力扣_二叉树的BFS_python版本

102. 二叉树的层序遍历

  • 代码
python 复制代码
class Solution:
    def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        if not root: return []
        res = []
        queue = collections.deque()
        queue.append(root)
        while queue:
            tmp_res = []
            for _ in range(len(queue)):
                node = queue.popleft()
                tmp_res.append(node.val)
                if node.left:queue.append(node.left)
                if node.right:queue.append(node.right)
            res.append(tmp_res)
        return res   

二、103. 二叉树的锯齿形层序遍历

  • 思路:其实只需要对偶数层的结果做反转就行。
  • 代码:
python 复制代码
class Solution:
    def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        if not root: 
            return []
        qeque = collections.deque()
        qeque.append(root)
        res = []
        even = 0
        while qeque:
            tmp_res = []
            for _ in range(len(qeque)):
                node = qeque.popleft()
                tmp_res.append(node.val)
                if node.left:
                    qeque.append(node.left)
                if node.right:
                    qeque.append(node.right)
            even += 1
            if even % 2 ==0:
                res.append(tmp_res[::-1])
            else:
                res.append(tmp_res)
        return res

三、513. 找树左下角的值

  • 思路:其实就是层序遍历最后一层的第一个元素
  • 代码:
python 复制代码
class Solution:
    def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
        queue = collections.deque()
        queue.append(root)
        res = []
        while queue:
            tmp_res = []
            for _ in range(len(queue)):
                node = queue.popleft()
                tmp_res.append(node.val)
                if node.left:
                    queue.append(node.left)
                if node.right:               
                    queue.append(node.right)
            res.append(tmp_res)
        return res[-1][0]
相关推荐
Cha0DD1 小时前
【由浅入深探究langchain】第二十集-SQL Agent+Human-in-the-loop
人工智能·python·ai·langchain
Cha0DD1 小时前
【由浅入深探究langchain】第十九集-官方的SQL Agent示例
人工智能·python·ai·langchain
阿豪学编程3 小时前
LeetCode724.:寻找数组的中心下标
算法·leetcode
智算菩萨3 小时前
【Tkinter】4 Tkinter Entry 输入框控件深度解析:数据验证、密码输入与现代表单设计实战
python·ui·tkinter·数据验证·entry·输入框
墨韵流芳3 小时前
CCF-CSP第41次认证第三题——进程通信
c++·人工智能·算法·机器学习·csp·ccf
七夜zippoe3 小时前
可解释AI:构建可信的机器学习系统——反事实解释与概念激活实战
人工智能·python·机器学习·可解释性·概念激活
csdn_aspnet4 小时前
C# 求n边凸多边形的对角线数量(Find number of diagonals in n sided convex polygon)
开发语言·算法·c#
禹中一只鱼4 小时前
【力扣热题100学习笔记】 - 哈希
java·学习·leetcode·哈希算法
凌波粒4 小时前
LeetCode--349.两个数组的交集(哈希表)
java·算法·leetcode·散列表
paeamecium5 小时前
【PAT甲级真题】- Student List for Course (25)
数据结构·c++·算法·list·pat考试