目录
问题描述
给定一个二叉树:
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指向。