4-> 5 -> 7 -> NULL
这题和原来题目的区别在于这里的tree有肯能不是full tree.或者有残缺。 所以最好的方法是level order travesral然后把每层的node从左边指向右边。
这里用了个额外的存储。所以空间复杂度为O(N)
一共需要遍历两遍第一遍是存储,第二遍是指针。所以时间复杂度为O(N)
code is as follow
# Definition for a binary tree node # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # self.next = None class Solution: # @param root, a tree node # @return nothing def solve(self,solution,level,root): if len(solution)<level+1: solution.append([]) solution[level].append(root) if root.left: self.solve(solution,level+1,root.left) if root.right: self.solve(solution,level+1,root.right) def connect(self, root): if root==None: return root solution=[] level=0 self.solve(solution,level,root) for level in range(len(solution)): for count in range(1,len(solution[level])): solution[level][count-1].next=solution[level][count] solution[level][-1].next=None return root
Populating Next Right Pointers in Each Node II Leetcode Python
原文地址:http://blog.csdn.net/hyperbolechi/article/details/43149265