【链表Linked List】力扣-117 填充每个节点的下一个右侧节点指针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

解题过程

树的题目就是不会啊,直接学习解析吧,不挣扎了,横向遍历是一点思路都没有

官方题解

方法一:层次遍历

简述一下deque()容器:deque是"double-end queue"的简称,是collections模块中的,针对Python内置的容器,它类似于list,可以快速的在队列头部和尾部添加、删除元素,是栈和队列的一种广义实现,常使用append()从右端加入元素,popleft()移除列表左端的一个元素。

需要注意的是,root本身属于可迭代对象,所以在对queue赋值时,使用了[],如上述代码:

python 复制代码
queue = deque([root])

首先得到根节点,最后通过循环获得对应的下一级的所有节点,再确定next指向。

相关推荐
Kuo-Teng19 分钟前
LeetCode 142: Linked List Cycle II
java·算法·leetcode·链表·职场和发展
ada7_29 分钟前
LeetCode(python)——73.矩阵置零
python·算法·leetcode·矩阵
小龙报41 分钟前
《算法通关指南C++编程篇 --- 初阶函数递归专题》
c语言·开发语言·c++·算法·创业创新·学习方法·visual studio
2501_941236621 小时前
分布式日志系统实现
开发语言·c++·算法
2501_941235511 小时前
C++与机器学习框架
开发语言·c++·算法
CoovallyAIHub1 小时前
基于SimCLR的自监督 YOLO:YOLOv5/8也能在低标注场景目标检测性能飙升
深度学习·算法·计算机视觉
2501_941111861 小时前
C++模块化设计原则
开发语言·c++·算法
2501_941237532 小时前
基于C++的游戏引擎开发
开发语言·c++·算法
_OP_CHEN2 小时前
算法基础篇:(十)贪心算法拓展之哈夫曼编码:从 “合并最优” 到数据压缩的传奇
c++·算法·贪心算法·蓝桥杯·哈夫曼编码·算法竞赛·acm/icpc
l1t2 小时前
利用DuckDB列表一句SQL输出乘法口诀表
数据库·sql·算法·duckdb