117 填充同一層的兄弟節點 II

2021-09-05 12:25:21 字數 1505 閱讀 6808

和116一樣層序

import queue

class solution:

# @param root, a tree link node

# @return nothing

def connect(self, root):

if not root:

return none

q = queue.queue()

q.put(root)

while not q.empty():

count = q.qsize()

last = none

for _ in range(count):

node = q.get()

if last:

last.next = node

last = node

if node.left:

q.put(node.left)

if node.right:

q.put(node.right)

遞迴:注意不能前序,應該先遞迴處理右子樹再左。因為每次處理root時得用到root.next的資訊,所以必須先對右側處理。

class solution:

# @param root, a tree link node

# @return nothing

def connect(self, root):

self.helper(root)

def helper(self, root):

if not root: #出口

return

#若有左子,且有右子,則左子連線右子

#無右子,則左子連線父親右側的左(或右)子

if root.left:

if root.right:

root.left.next = root.right

else:

next = root.next

while next:

if next.left:

root.left.next = next.left

break

if next.right:

root.left.next = next.right

break

next = next.next

#若有右子,連線父親右側的左(或右)子

if root.right:

next = root.next

while next:

if next.left:

root.right.next = next.left

break

if next.right:

root.right.next = next.right

break

next = next.next

self.helper(root.right)

self.helper(root.left)

LeetCode116 填充同一層的兄弟節點

給定乙個二叉樹 struct treelinknode填充它的每個 next 指標,讓這個指標指向其下乙個右側節點。如果找不到下乙個右側節點,則將 next 指標設定為null。初始狀態下,所有 next 指標都被設定為null。說明 示例 給定完美二叉樹,1 2 3 4 5 6 7呼叫你的函式後,...

leetcode筆記 116填充同一層的兄弟節點

題目 給定乙個二叉樹 struct treelinknode填充它的每個 next 指標,讓這個指標指向其下乙個右側節點。如果找不到下乙個右側節點,則將 next 指標設定為null。初始狀態下,所有 next 指標都被設定為null。說明 示例 給定完美二叉樹,1 2 3 4 5 6 7呼叫你的函...

117 填充每個節點的下乙個右側節點指標 II

116題為完美二叉樹,所以這題116的遞迴法這裡不適用。leetcode 116.填充每個節點的下乙個右側節點指標 解法一 層次遍歷 definition for a node.class node node int val val val left null right null next nul...