不难,考察代码编写能力
116. Populating Next Right Pointers in Each Node
class Solution:
def connect(self, root):
if not root:
return None
def isP(n):
for i in range(1,n+1):
if 2**i-1==n:
return True
elif 2**i>n:
return False
return False
def isQ(n):
for i in range(1,n):
if 2**i==n:
return True
elif 2**i>n:
return False
return False
stack=[root]
count=0
pre=TreeLinkNode(0)
while stack:
now = stack.pop(0)
count+=1
if isQ(count):
pre=now
else:
pre.next=now
pre=pre.next
if now.left:
stack.append(now.left)
stack.append(now.right)
117. Populating Next Right Pointers in Each Node II
class Solution:
def connect(self, root):
if not root:
return None
stack=[root]
while stack:
mystack=[]
pre=None
while stack:
curr=stack.pop()
if pre:
pre.next=curr
pre=curr
mystack.append(curr)
while mystack:
node = mystack.pop()
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)