Leetcode每日一题—116. 填充每个节点的下一个右侧节点指针
###问题
给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。
题目分析
对于这个题目 我们由题目给的图解就看出来和每一层都有关,那么很明显 应该可以利用BFS解决问题,BFS是对每一层进行遍历,所以这个问题还是比较简单的,只需要套好模板就可以;
题目解决
def connect(self, root):
"""
:type root: Node
:rtype: Node
"""
#利用BFS
if not root:
return root
queue=[]
queue.append(root)
while queue:
n=len(queue)
for i in range(n):
m=queue.pop(0)
if m.left:
queue.append(m.left)
if m.right:
queue.append(m.right)
if i==n-1:
m.next=None
break
m.next=queue[0]
return root