#Leet Code# Populating Next Right Pointers in Each Node II

描述:注意需要先self.connect(right)再self.connect(left),否则会有case通不过,原因是左边递归执行时依赖与右边的next已经建立,而先执行connect(left)的话右边还没有完成关系的建立。

代码:

 1 class Solution:
 2     # @param root, a tree node
 3     # @return nothing
 4     def doSth(self, nextNode, conNode):
 5         while nextNode is not None:
 6             if nextNode.left is None and nextNode.right is None:
 7                 nextNode = nextNode.next
 8             elif nextNode.left is not None:
 9                 conNode.next = nextNode.left
10                 break
11             else:
12                 conNode.next = nextNode.right
13                 break
14 
15     def connect(self, root):
16         if root is None:
17             return
18 
19         if root.left is None and root.right is None:
20             return
21         elif root.left is None and root.right is not None:
22             self.doSth(root.next, root.right)
23         elif root.left is not None and root.right is None:
24             self.doSth(root.next, root.left)
25         else:
26             root.left.next = root.right
27             self.doSth(root.next, root.right)
28 
29         
30         self.connect(root.right)
31         self.connect(root.left)
原文地址:https://www.cnblogs.com/mess4u/p/3885438.html