タイトルの意味:完全なバイナリツリーの各ノードに新しいポインタを追加します。これにより、レイヤー内の現在のノードの次のノードを示すことができます。タイトルは難しくなく、トラバースするだけで済みます。現在のレイヤーのノードを格納するキューを設定してから、1つずつデキューします。右端のノードの次のポインターは空です。私は以前にpatで同様の質問を書いたことがありますが、それらはC ++で書かれており、pythonに精通していません。次のコードは公式チュートリアルからのものです。
from collections import deque
class Solution:
def connect(self, root: 'Node') -> 'Node': # root是指向Node型的指针
if not root:
return root
# 根节点进队
q = deque([root])
while q:
size = len(q) #每次的结点数目
for i in range(size):
node = q.popleft() #出队
if(i < size - 1): #每一层最右边那个结点不需要指定next
node.next = q[0]
if node.left: #下一层结点入队
q.append(node.left)
if node.right:
q.append(node.right)
return root