描述:注意需要先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)