当前位置: 首页 > news >正文

【LeetCode】填充每个节点的下一个右侧节点指针 II

目录

  • 一、题目
  • 二、解法
  • 完整代码


一、题目

给定一个二叉树:

struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。

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

示例 1:
在这里插入图片描述

输入:root = [1,2,3,4,5,null,7]
输出:[1,#,2,3,#,4,5,7,#]
解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),‘#’ 表示每层的末尾。
示例 2:

输入:root = []
输出:[]

提示:

树中的节点数在范围 [0, 6000] 内
-100 <= Node.val <= 100
进阶:

你只能使用常量级额外空间。
使用递归解题也符合要求,本题中递归程序的隐式栈空间不计入额外空间复杂度。


二、解法

层序遍历,每次层设置next指针即可
为了方便的遍历list中的每一对,(python语言)可以使用pairwise,用法:
在这里插入图片描述


完整代码

"""
# Definition for a Node.
class Node:def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):self.val = valself.left = leftself.right = rightself.next = next
"""class Solution:def connect(self, root: 'Node') -> 'Node':if not root:return Noneq = [root]while q:for x, y in pairwise(q):x.next = ytmp = qq = []for node in tmp:if node.left: q.append(node.left)if node.right: q.append(node.right)return root

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PHP 表单验证:邮件和URL
  • 【每日一练】python编写一个简易计算器
  • ETCD介绍以及Go语言中使用ETCD详解
  • IDEA的详细设置
  • 【Spark官方文档部分翻译】RDD编程指南(RDD Programming Guide)
  • Oracle 12c新特性 In-Memory Column Store
  • WebGIS主流的客户端框架比较|OpenLayers|Leaflet|Cesium
  • 【BUG】已解决:AttributeError: ‘WindowsPath‘ object has no attribute ‘rstrip‘
  • SQL中的游标是什么?
  • [Spring Boot]Protobuf解析MQTT消息体
  • 阿里云服务器 篇三:提交搜索引擎收录
  • = null 和 is null;SQL中关于NULL处理的4个陷阱;三值逻辑
  • VulnHub:insomnia
  • 如何确定企业信息系统的安全保护等级
  • linux内核中list的基本用法
  • Consul Config 使用Git做版本控制的实现
  • gulp 教程
  • iOS | NSProxy
  • react 代码优化(一) ——事件处理
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • ubuntu 下nginx安装 并支持https协议
  • 从零开始学习部署
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 技术胖1-4季视频复习— (看视频笔记)
  • 前嗅ForeSpider采集配置界面介绍
  • 为什么要用IPython/Jupyter?
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 《天龙八部3D》Unity技术方案揭秘
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • #每日一题合集#牛客JZ23-JZ33
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (面试必看!)锁策略
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (一)RocketMQ初步认识
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)VC++中ondraw在什么时候调用的
  • (转)母版页和相对路径
  • (转)为C# Windows服务添加安装程序
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net core 管理用户机密
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .Net Core中Quartz的使用方法
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 通过系统影子账户实现权限维持
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?