116. 填充每個節點的下一個右側節點指標

p0ther發表於2020-10-15

給定一個完美二叉樹,其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下:

struct Node {
  int val;
  Node *left;
  Node *right;
  Node *next;
}

填充它的每個 next 指標,讓這個指標指向其下一個右側節點。如果找不到下一個右側節點,則將 next 指標設定為 NULL。

初始狀態下,所有 next 指標都被設定為 NULL。

'''
方法1的空間開銷在於佇列,可以利用兩個指標來代替佇列的作用。設一個指標first指向遍歷到的每層的頭節點,用另一個輔助指標cur完成對first所指的當前層的遍歷。
程式碼
'''
class Solution:
    def connect(self, root: 'Node') -> 'Node':
        if not  root:return root
        fist=root
        while fist and fist.left:
            cur=fist
            while cur and cur.left:
                cur.left.next=cur.right
                if cur.next:
                    cur.right.next=cur.next.left
                cur=cur.next
            fist=fist.left
        return root

 

相關文章