#coding:utf-8 # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param pRoot TreeNode类 # @return int整型二维数组 # #*********# #思路:用两个deque,交替处理 from collections import deque class Solution: def Print(self , pRoot ): # write code here #BFS #init path = [] #process ##corner case if pRoot == None: return pRoot if pRoot.left == None and pRoot.right == None: return [[pRoot.val]] ##base case dq1 = deque() dq1.append(pRoot) #cur_cnt = 1 dq2 = deque() while len(dq1) > 0 or len(dq2) > 0: tmp_level = [] while len(dq1) > 0: cur_node = dq1.popleft() tmp_level.append(cur_node.val) if cur_node.left != None: dq2.append(cur_node.left) if cur_node.right != None: dq2.append(cur_node.right) if len(tmp_level) > 0: path.append(tmp_level) tmp_level = [] while len(dq2) > 0: cur_node = dq2.popleft() tmp_level.append(cur_node.val) if cur_node.left != None: dq1.append(cur_node.left) if cur_node.right != None: dq1.append(cur_node.right) if len(tmp_level) > 0: path.append(tmp_level) #print ("Path is: ", path) #ret return path