小语种网站建设,wordpress 上传图片不显示,二手房公司网站源码,注册公司流程网*层序遍历#xff08;二叉树的广度优先搜索#xff0c;对应10道题#xff09;
102.二叉树的层序遍历(opens new window) 107.二叉树的层次遍历II(opens new window) 199.二叉树的右视图(opens new window) 637.二叉树的层平均值(opens new window)斜体样式 429.N叉树的层序…*层序遍历二叉树的广度优先搜索对应10道题
102.二叉树的层序遍历(opens new window) 107.二叉树的层次遍历II(opens new window) 199.二叉树的右视图(opens new window) 637.二叉树的层平均值(opens new window)斜体样式 429.N叉树的层序遍历(opens new window) 515.在每个树行中找最大值(opens new window) 116.填充每个节点的下一个右侧节点指针(opens new window) 117.填充每个节点的下一个右侧节点指针II(opens new window) 104.二叉树的最大深度(opens new window) 111.二叉树的最小深度
考点 队列 我的思路 和视频讲解思路一致 视频讲解关键点总结 利用队列实现二叉树层序遍历因为直接利用二叉树数据结构无法实现逐层遍历同时层序遍历要求先查询的元素先处理因此使用队列两层嵌套循环初始将根节点加入队列外层循环判断队列是否为空每次外层循环遍历当前层节点同时查询所有下一层节点 在循环的开始记录队列的初始长度代表当前层的节点数量开始内层循环循环次数即为当前层节点数量 循环开始从队列中取顶层元素将其加入最终的结果列表判断该元素节点是否有左右子节点若有加入队列进行下一次循环 返回最终结果 我的思路的问题 无 代码书写问题 python里的queue.Queue对象不能直接作为循环的判断条件其不支持布尔值测试因为该类里没有进行布尔值转换的方法因此当使用其作为判断条件时由于该对象始终是一个对象即条件为True将发生无限循环合理的方式是使用其empty方法来作为判断条件 可执行代码
# 102.二叉树的层序遍历(opens new window)
class Solution:def levelOrder(self, root: Optional[TreeNode]) - List[List[int]]:if root is None:return []my_queue queue.Queue()my_queue.put(root)result []while not my_queue.empty():size my_queue.qsize()level []while size:size - 1cur my_queue.get()level.append(cur.val)if cur.left:my_queue.put(cur.left)if cur.right:my_queue.put(cur.right)result.append(level)return result# 107.二叉树的层次遍历II(opens new window)
# 题目要求逆序层次遍历此时相较于102题的代码只需要额外在输出之前调用列表的reverse函数逆序返回或[::-1]进行逆序切片即可*226.翻转二叉树
题目链接/文章讲解/视频讲解https://programmercarl.com/0226.%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.html
考点 二叉树遍历变量交换 我的思路 无 视频讲解关键点总结 在遍历的基础上进行变量交换 我的思路的问题 无 代码书写问题 无 可执行代码
# 二叉树深度优先前序遍历递归变量交换
class Solution:def invertTree(self, root: Optional[TreeNode]) - Optional[TreeNode]:if root is None:return rootroot.left, root.right root.right, root.leftself.invertTree(root.left)self.invertTree(root.right)return root101.对称二叉树先过年休息年后再补上
题目链接/文章讲解/视频讲解https://programmercarl.com/0101.%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.html 考点 我的思路 视频讲解关键点总结 我的思路的问题 代码书写问题 可执行代码