题目描述:
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
思路:
思路1:
- 按序获取每一层节点的值;
- 将偶数层节点的值倒序。
Python实现1:
// An highlighted block
class Solution:
def Print(self, pRoot):
# write code here
if not pRoot: return []
res = []
self.level(pRoot, 0, res)
for level in range(1, len(res), 2):
res[level] = res[level][::-1]
return res
def level(self,root,level,res):
if not root: return
if level == len(res):
res.append([])
res[level].append(root.val)
if root.left:
self.level(root.left, level + 1, res)
if root.right:
self.level(root.right, level + 1, res)
https://blog.csdn.net/fuxuemingzhu/article/details/79724959
python实现2:
// An highlighted block
# -*- coding:utf-8 -*-
class Solution:
def Print(self, pRoot):
# write code here
if not pRoot:
return []
from collections import deque
res,tmp=[],[]
last=pRoot
q=deque([pRoot])
left_to_right=True
while q:
t=q.popleft()
tmp.append(t.val)
if t.left:
q.append(t.left)
if t.right:
q.append(t.right)
if t == last:
res.append(tmp if left_to_right else tmp[::-1])
left_to_right= not left_to_right
tmp=[]
if q:last=q[-1]
return res