难度:Medium ?:1119
题目
给定一棵完美二叉树(所有叶子在同一层,每个父节点都有两个子节点),树的节点的定义中包含一个next指针,要做的事情是将每个节点的next指针指向下一个右边的节点。
思路
就是二叉树层次遍历问题,借助一个队列即可解决。
"""
# Definition for a Node.
class Node:
def __init__(self, val, left, right, next):
self.val = val
self.left = left
self.right = right
self.next = next
"""
class Solution:
def connect(self, root: 'Node') -> 'Node':
if not root:
return root
queue = [root]
while queue:
count = len(queue) #这一层的节点数
while count>0:
node1 = queue.pop(0)
count -= 1
if node1.left:
queue.append(node1.left)
if node1.right:
queue.append(node1.right)
if count > 0: #每一层的最后一个无需修改next指针
node1.next = queue[0]
return root