Medium
首先,我们想到如果要操作二叉树中的每一个一点,必须要遍历这整个二叉树。两种方式:BFS、DFS
题目要求我们同行的节点串联起来,这边肯定需要使用BFS
。使用BFS遍历,相同层高的节点进行关联
注意对空树进行特判
以上,尝试一下代码,AC!
python3
class Solution:
def connect(self, root: 'Node') -> 'Node':
if root is None:
return None
queue = [{
"level": 1,
"node": root
}]
while len(queue) > 0:
item = queue.pop(0)
level = item['level']
node = item['node']
if node.left is not None:
if len(queue) > 0 and queue[-1]['level'] == level + 1:
queue[-1]['node'].next = node.left
queue.append({
"level": level + 1,
"node": node.left
})
if node.right is not None:
if len(queue) > 0 and queue[-1]['level'] == level + 1:
queue[-1]['node'].next = node.right
queue.append({
"level": level + 1,
"node": node.right
})
return root