和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...