题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
暴力就完事了
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param pRoot TreeNode类
# @return int整型二维数组
#
class Solution:
def Print(self , pRoot: TreeNode) -> List[List[int]]:
if pRoot==None:
return []
line=0#当前操作行的行号
stack=[]#栈 后入先出队列
queue=[pRoot]#队列 先入先出队列
valQueue=[pRoot.val]
result=[valQueue.copy()]
while len(queue)>0:
valQueue.clear()
if line==0:
#首次进行运算
if queue[0].right!=None:
queue.append(queue[0].right)
valQueue.append(queue[0].right.val)
if queue[0].left!=None:
queue.append(queue[0].left)
valQueue.append(queue[0].left.val)
queue.pop(0)#删除第一个
if len(valQueue)>0:
result.append(valQueue.copy())
line+=1
elif line%2!=0:#操作奇数行
'''
方向由左向右,
此时应由左向右将子节点入栈
先左后右
'''
while len(queue)>0:
if queue[0].right!=None:
stack.append(queue[0].right)
if queue[0].left!=None:
stack.append(queue[0].left)
queue.pop(0)
while len(stack)>0:
valQueue.append(stack[-1].val)
queue.append(stack.pop(-1))#将栈中元素放入队列
if len(valQueue)>0:
result.append(valQueue.copy())
line+=1
else:
#操作偶数行
'''
方向由右向左
先右后左
'''
while len(queue)>0:
if queue[0].left!=None:
stack.append(queue[0].left)
if queue[0].right!=None:
stack.append(queue[0].right)
queue.pop(0)
while len(stack)>0:
valQueue.append(stack[-1].val)
queue.append(stack.pop(-1))#将栈中元素放入队列
if len(valQueue)>0:
result.append(valQueue.copy())
line+=1
return result
# write code here