题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
解题思路
我的暴力方法
先用宽度优先搜索按一般的把从左到右的每一层搞出来变成一个二维vector
再把下标为偶数的内部vector倒序即可
Python 代码
暴力方法,先用宽度优先搜索按一般的从左到右的每一层搞出来变成一个二维数组,再把下标为偶数的内部数组倒序即可。
class Solution:
def Print(self, pRoot):
if not pRoot:
return []
nodeStack=[pRoot]
result=[]
while nodeStack:
res = [] # 当前层得到的输出
nextStack=[] # 下一层的节点
for i in nodeStack:
res.append(i.val)
if i.left:
nextStack.append(i.left)
if i.right:
nextStack.append(i.right)
nodeStack=nextStack # 更新当前层的结点
result.append(res) # 得到当前层的输出
returnResult=[]
for i,v in enumerate(result):
if i%2==0:
returnResult.append(v)
else:
returnResult.append(v[::-1])
return returnResult
s = Solution()
res = s.Print(pRoot)
print('.....',res)