【链表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指向。

相关推荐
我搞slam7 分钟前
快乐数--leetcode
算法·leetcode·哈希算法
WWZZ202540 分钟前
快速上手大模型:机器学习3(多元线性回归及梯度、向量化、正规方程)
人工智能·算法·机器学习·机器人·slam·具身感知
东方佑2 小时前
从字符串中提取重复子串的Python算法解析
windows·python·算法
西阳未落2 小时前
LeetCode——二分(进阶)
算法·leetcode·职场和发展
通信小呆呆2 小时前
以矩阵视角统一理解:外积、Kronecker 积与 Khatri–Rao 积(含MATLAB可视化)
线性代数·算法·matlab·矩阵·信号处理
CoderCodingNo3 小时前
【GESP】C++四级真题 luogu-B4068 [GESP202412 四级] Recamán
开发语言·c++·算法
一个不知名程序员www3 小时前
算法学习入门---双指针(C++)
c++·算法
Shilong Wang4 小时前
MLE, MAP, Full Bayes
人工智能·算法·机器学习
w_w方圆4 小时前
1.序列式容器-vector&list
链表·stl·vector·数组·标准模板库
Theodore_10224 小时前
机器学习(6)特征工程与多项式回归
深度学习·算法·机器学习·数据分析·多项式回归