【毎日の質問】116.各ノードに次の右ポインターを入力する

ここに写真の説明を挿入

タイトルの意味:完全なバイナリツリーの各ノードに新しいポインタを追加します。これにより、レイヤー内の現在のノードの次のノードを示すことができます。タイトルは難しくなく、トラバースするだけで済みます。現在のレイヤーのノードを格納するキューを設定してから、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

おすすめ

転載: blog.csdn.net/SJTUKK/article/details/109091893