首页 > 其他分享 >11月LeetCode每日一题: 117. 填充每个节点的下一个右侧节点指针 II

11月LeetCode每日一题: 117. 填充每个节点的下一个右侧节点指针 II

时间:2023-11-03 15:23:16浏览次数:26  
标签:11 Node right cur next II tail 节点

题目描述:

给定一个二叉树:

struct Node {
  int val;
  Node *left;
  Node *right;
  Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 

初始状态下,所有 next 指针都被设置为 NULL 。

 考察层序遍历

 上代码

"""
# Definition for a Node.
class Node:
    def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):
        self.val = val
        self.left = left
        self.right = right
        self.next = next
"""
# 117. 填充每个节点的下一个右侧节点指针 II (层序遍历解法)
class Solution:
    def connect(self, root: 'Node') -> 'Node':
        if not root:
            return None
        queue = [root]
        while queue:  # 遍历每一层
            length = len(queue)
            tail = None # 每一层维护一个尾节点
            for i in range(length): # 遍历当前层
                curnode = queue.pop(0)
                if tail:
                    tail.next = curnode # 让尾节点指向当前节点
                tail = curnode # 让当前节点成为尾节点
                if curnode.left : queue.append(curnode.left)
                if curnode.right: queue.append(curnode.right)
        return root
# 117. 填充每个节点的下一个右侧节点指针 II (链表解法)
class Solution:
    def connect(self, root: 'Node') -> 'Node':
        if not root:
            return None
        first = root
        while first:  # 遍历每一层
            dummyHead = Node(None)  # 为下一行创建一个虚拟头节点,相当于下一行所有节点链表的头结点(每一层都会创建);
            tail = dummyHead  # 为下一行维护一个尾节点指针(初始化是虚拟节点)
            cur = first
            while cur:  # 遍历当前层的节点
                if cur.left:  # 链接下一行的节点
                    tail.next = cur.left
                    tail = tail.next
                if cur.right:
                    tail.next = cur.right
                    tail = tail.next
                cur = cur.next  # cur同层移动到下一节点
            first = dummyHead.next  # 此处为换行操作,更新到下一行
        return root

 

标签:11,Node,right,cur,next,II,tail,节点
From: https://www.cnblogs.com/lelouchulu/p/17807644.html

相关文章

  • iwtgm-11
    题目链接A.能全买,就让剩余的总钱/全买,加上可得的糖数,总钱-这些花费此时不能全买,就遍历一遍,算出能买的总数再让剩余的总钱/能买的...这样是不会T的:设total为这一轮能买的糖果的总价格,last为之前剩下的钱,now为这一轮买完糖果后剩下的钱now=last%total,所以now<total,(取模肯定......
  • oracle异常问题ORA-01116、ORA-01110、ORA-27041:无法打开文件
    select*fromdba_data_files;ORA-01116:打开数据文件3出错ORA-01110:数据文件3:'/home/oracle/dmpfile20200903/test_xfh_db.dbf'ORA-27041:无法打开文件Linux-x86_64Error:2:NosuchfileordirectoryAdditionalinformation:301116.00000-"errorinopening......
  • 给Windows11开启休眠功能
      休眠功能明显比睡眠功能好用,还不惧怕断电,不知道为什么微软要把这个功能默认关闭。  开启方法:  1.使用管理员资格启动命令提示符  2.使用如下命令即可开启:powercfg.exe/hibernateon  使用后休眠就回来了。 ......
  • 记一次GFS集群节点系统重做数据恢复
    背景:比较倒霉,周日晚上服务器硬盘损坏更换后发现数据块损坏,系统无法正常使用只能重做系统,恢复了好多虚拟机,过程无比痛苦,目前只说一说恢复gfs。思路:登录gfs master节点查看peer状态,glusterpeerstatus  发现另一个节点处于State:PeerRejected(Disconnected)先把peer点......
  • 2023.11.3 做题记录
    CF349B*1700\(Igor\)深深爱上了\(Tanya\).现在,\(Igor\)想表达他的爱意,他便在\(Tanya\)家对面的墙上写下一串数字.\(Igor\)认为,数字写得越大,\(Tanya\)越喜欢他.不幸的是,他只有\(v\)升油漆,每个数字都会花掉一定的油漆\(a_i\).\(Igor\)不喜欢\(0\)所以数中不会出......
  • C#.NET 国密SM4 CBC 对称加解密 与JAVA互通 ver:20231103
    C#.NET国密SM4CBC对称加解密与JAVA互通ver:20231103 .NET环境:.NET6控制台程序(.netcore)。JAVA环境:JAVA8,带maven的JAVA控制台程序。 简要解析:1:加密的KEY、明文等输入参数都需要string转byte[],要约定好编码,如:UTF8。2:加密后的输出参数:byte[],在传输时需要转......
  • NU1102 找不到版本为(=5.0.0-dev)的包 Microsoft.NETCore.App.Host.win-x64
    异常: 原因:.NetCore3.0之后的版本,默认情况下项目在生成时,会自动生成与运行时版本相同的可执行文件(exe<Windows下>),它是需要对应版本的一个dotnet-apphost-pack包支持。  解决方法:1.下载安装dotnet-apphost-pack包 2.禁用生成可执行文件,只要.dll文件在项目文件.csp......
  • 2023年11月最新全国省市区县和乡镇街道行政区划矢量边界坐标经纬度地图数据 shp geojs
    发现个可以免费下载全国 geojson 数据的网站,推荐一下。支持全国、省级、市级、区/县级、街道/乡镇级以及各级的联动数据,支持导入矢量地图渲染框架中使用,例如:D3、Echarts等geojson数据下载地址:https://geojson.hxkj.vip该项目github地址:https://github.com/TangSY/echarts-m......
  • 投资者查外汇平台必备利器"FX110 APP" !
    随着全球外汇市场的不断扩大,外汇交易者对于安全、可靠的交易平台的需求也日益增长。在这个背景下,“FX110APP”成为数千万外汇交易者的信赖之选,“FX110APP”移动客户端一直以来都是外汇行业的重要领头标杆产品,以“外汇交易平台资料查询、监管查询、牌照查询、风险曝光、信用评价......
  • 2023.11《地球ONLINE》版本大更新!!!
    2023.11《地球ONLINE》版本大更新!!!欢迎来到全宇宙最大规模沙盒游戏地球online,这款游戏已经运行长达46亿年,在线人数已多达80多亿,目前设立“197个服务器,目前游戏内存占用率仍未达到极限,且下载速度极快,创建新号条件为“会员邀请制”,仅需10个月就能登录游戏,新玩家在登录游戏后便来......