116. Populating Next Right Pointers in Each Node
# Medium
# 方法二,非递归
# 我写的
"""
# Definition for a Node.
class Node:
def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):
self.val = val
self.left = left
self.right = right
self.next = next
"""
class Solution:
def connect(self, root: 'Node') -> 'Node':
# edge case
if root == None:
return None
# regular case
queue = []
queue.append(root)
while len(queue) != 0:
n = len(queue)
tmp = queue.pop(0)
while n >= 1:
if tmp.left != None:
queue.append(tmp.left)
queue.append(tmp.right)
if n == 1:
tmp.next = None
else:
right = queue.pop(0)
tmp.next = right
tmp = right
n -= 1
return root
非递归的方法,n 为tree的高度,时间复杂度为 ,因为需要遍历所有的节点,空间复杂度为叶子节点的个数
Last updated
Was this helpful?