python-leetcode-填充每个节点的下一个右侧节点指针 II

117. 填充每个节点的下一个右侧节点指针 II - 力扣(LeetCode)

python 复制代码
"""
# 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
"""
from collections import deque

class Solution:
    def connect(self, root: 'Node') -> 'Node':
        if not root:
            return None
        
        queue = deque([root])
        
        while queue:
            size = len(queue)
            prev = None  # 记录上一节点
            
            for i in range(size):
                node = queue.popleft()
                if prev:
                    prev.next = node  # 连接前一个节点的 next
                
                prev = node  # 更新 prev
                
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            
            # 该层最后一个节点的 next 置为 None
            prev.next = None
        
        return root
相关推荐
独自破碎E1 分钟前
【前缀和+哈希】LCR_011_连续数组
算法·哈希算法
一条大祥脚8 分钟前
26.1.26 扫描线+数论|因子反演+子序列计数|树套树优化最短路
数据结构·算法
m0_5613596711 分钟前
基于C++的机器学习库开发
开发语言·c++·算法
星空露珠18 分钟前
速算24点所有题库公式
开发语言·数据库·算法·游戏·lua
2401_8324027519 分钟前
C++中的类型擦除技术
开发语言·c++·算法
努力学习的小廉27 分钟前
我爱学算法之—— 递归回溯综合(二)
开发语言·算法
sheji526129 分钟前
JSP基于信息安全的读书网站79f9s--程序+源码+数据库+调试部署+开发环境
java·开发语言·数据库·算法
2301_7634724629 分钟前
C++网络编程(Boost.Asio)
开发语言·c++·算法
依依yyy34 分钟前
沪深300指数收益率波动性分析与预测——基于ARMA-GARCH模型
人工智能·算法·机器学习
踩坑记录1 小时前
leetcode hot100 23. 合并 K 个升序链表 hard 分治 迭代
leetcode·链表