首页 > 编程语言 >15天【代码随想录算法训练营34期】第六章 二叉树 part02(● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2 )

15天【代码随想录算法训练营34期】第六章 二叉树 part02(● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2 )

时间:2024-04-03 15:59:33浏览次数:25  
标签:10 right cur val self 随想录 二叉树 append left

层序遍历 10
102.二叉树的层序遍历 (opens new window)

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        q_ = []
        result = []
        if root:
            q_.append(root)
        while q_:
            size = len(q_)
            sub_result = []
            for i in range(size):
                cur = q_.pop(0)
                sub_result.append(cur.val)
                if cur.left:
                    q_.append(cur.left)
                if cur.right:
                    q_.append(cur.right)
            result.append(sub_result)
        return result

107.二叉树的层次遍历II

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def levelOrderBottom(self, root: Optional[TreeNode]) -> List[List[int]]:
        q_ = []
        result = []
        if root:
            q_.append(root)
        while q_:
            level = []
            size = len(q_)
            for i in range(size):
                cur = q_.pop(0)
                level.append(cur.val)
                if cur.left:
                    q_.append(cur.left)
                if cur.right:
                    q_.append(cur.right)
            result.insert(0, level)
        return result

199.二叉树的右视图

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def rightSideView(self, root: Optional[TreeNode]) -> List[int]:
        q_ = []
        lyr_tree = []
        lyr = 0
        if root:
            q_.append(root)
        while q_:
            level = []
            size = len(q_)
            for i in range(size):
                cur = q_.pop(0)
                level.append(cur.val)
                if cur.left:
                    q_.append(cur.left)
                if cur.right:
                    q_.append(cur.right)
            lyr_tree.append(level)
            lyr += 1
        result = []
        for i in range(lyr):
            result.append(lyr_tree[i][-1])

        return result

637.二叉树的层平均值

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def averageOfLevels(self, root: Optional[TreeNode]) -> List[float]:
        q_ = []
        result = []
        if root:
            q_.append(root)
        while q_:
            level = []
            size = len(q_)
            for i in range(size):
                cur = q_.pop(0)
                level.append(cur.val)
                if cur.left:
                    q_.append(cur.left)
                if cur.right:
                    q_.append(cur.right)
            result.append(sum(level) / len(level))
        return result

429.N叉树的层序遍历

"""
# Definition for a Node.
class Node:
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children
"""
class Solution:
    def levelOrder(self, root: 'Node') -> List[List[int]]:
        q_ = []
        result = []
        if root:
            q_.append(root)
        while q_:
            level = []
            size = len(q_)
            for i in range(size):
                cur = q_.pop(0)
                level.append(cur.val)
                if cur.children:
                    for i in cur.children:
                        q_.append(i)
            result.append(level)
        return result

515.在每个树行中找最大值

116.填充每个节点的下一个右侧节点指针

117.填充每个节点的下一个右侧节点指针II

104.二叉树的最大深度

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        if root is None:
            return 0
        else:
            return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right))

111.二叉树的最小深度

226.翻转二叉树
101.对称二叉树 2

标签:10,right,cur,val,self,随想录,二叉树,append,left
From: https://www.cnblogs.com/miramira/p/18112844

相关文章

  • win10电脑日历日程怎么放在桌面上显示出来?
    身为一名上班族,我每天都需要面对繁杂的工作任务,为了确保不遗漏任何重要事项并按时完成规划,我急需一款能在电脑桌面上直观展示日程的软件。那么,win10电脑日历日程怎么放在桌面上显示出来呢?幸运的是,同事向我推荐了一款名为“敬业签”的电脑桌面日程软件。在Windows电脑上使用它,并简......
  • 银河麒麟高级服务器操作系统(AMD64版)V10 7
    银河麒麟高级服务器操作系统(AMD64版)V10部署发布.NETframeworkWebFroms项目下载ios镜像麒麟生态官网下载:https://eco.kylinos.cn/找到需要下载的镜像,注意版本,电脑是国产芯片的看一下对应的版本下载,AMD和Intel芯片下载AMD版的或者点击下面地址直接下载https://distro-imag......
  • 银河麒麟V10系统 jexus 的项目配置
    关于银河麒麟配置Jexus的具体步骤请看上一章:银河麒麟高级服务器操作系统(AMD64版)V107.1Jexus部署发布.NETframeworkWebFroms项目进入Jexus的siteconf中,这是jexus存放配置文件的地方大概讲解一下这些是什么意思port=80这指定了服务器监听的端口号。在这种情况下,服务器会......
  • RAID0、RAID1、RAID5、RAID10区别
    一、RAID是什么?RAID(RedundantArrayofIndependentDisks)即独立磁盘冗余阵列,简称为「磁盘阵列」,其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性。二、RAID有哪些?RAID方案常见的可以分为:Raid0:至少需要两......
  • iPad手绘+Ai二合一课程,Procreate+Mj+SD零基础到精通(10节视频课)
    课程内容:1系统课AI辅助设计流-从零进阶轻松驾驭AI设计,mp42商务沟通阶段ChatGPTMidjourney-聊天机器人项目调研资料收集,mp43_商务沟通阶段ChatGPT_Midjourney-Midjourney基础界面初识初步设置.mp44_商务沟通阶段ChatGPT_Midjourney-Midjourney基础Prompt结......
  • 代码随想录打卡Day6
    字符串344.反转字符串classSolution{publicvoidreverseString(char[]s){//注意遍历范围,可以减少循环次数for(inti=0;i<s.length/2;i++){chartmp=s[i];s[i]=s[s.length-i-1];s[s.length-i-1]=t......
  • ubuntu使用-ubuntu23.10使用虚拟网桥方式使虚拟机与主机通信
    ubuntu使用-ubuntu23.10使用虚拟网桥方式使虚拟机与主机通信ubuntukvm网桥一、配置桥接网络1.ubuntu机器上的网络设备要求我的笔记本上一开始是启用的无线网络,但是在进行网桥绑定的时候没有办法绑定到无线网卡上。据我自己的尝试,需要使用有线网络,而且,不是说安装一个有线......
  • 在aarch64上编译,fstack: master分支:5b97230c858598a10e1b82c tag: v1.23, origin/mast
    F-Stack一个基于DPDK的开源和高性能网络框架 基于DPDK23.11需要做如下操作sed替换:sed-n'/DEV_RX_OFFLOAD_IPV4_CKSUM/p'drivers/net/macb/*sed-i's/ETH_/RTE_ETH_/g'*.csed-i's/DEV_/RTE_ETH_/g'*.c f-stack适配dpdk20.11sed-i's/RTE_MBUF_F_RX_I......
  • 提高生产力!这10个Lambda表达式必须掌握,开发效率嘎嘎上升!
    在Java8及更高版本中,Lambda表达式的引入极大地提升了编程的简洁性和效率。本文将围绕十个关键场景,展示Lambda如何助力提升开发效率,让代码更加精炼且易于理解。集合遍历传统的for-each循环对集合进行遍历虽然直观,但在处理大量数据时显得冗长。例如:List<String>list=Arrays.as......
  • 计算机网络 实验指导 实验10
    实验10路由器的基本配置1.实验拓扑图名称相连的接口IP地址网关PC0172.1.1.2/28PCF0/0192.168.1.2/24192.168.1.1/24PCF0/110.10.1.2/2410.10.1.1/24S0/0172.159.1.1/242.实验目的(1)了解路由器的作用(2)熟悉路由器的基本配置方法(2)熟悉PacketTracer路由模拟器的使用使用......