按之字形顺序打印二叉树
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
- 层次遍历+双向切换
class Solution:
def Print(self, pRoot):
# write code here
res=[]
queue=[]
left2right=False
queue.append(pRoot)
if not pRoot:
return []
res.append([pRoot.val])
while queue:
length=len(queue)
for i in range(length):
tmp=queue.pop(length-i-1)
if left2right:
if tmp.left:
queue.append(tmp.left)
if tmp.right:
queue.append(tmp.right)
else:
if tmp.right:
queue.append(tmp.right)
if tmp.left:
queue.append(tmp.left)
left2right=not left2right
if queue:
res.append([i.val for i in queue])
return res
把二叉树打印成多行
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
- 层次遍历
class Solution:
# 返回二维列表[[1,2],[4,5]]
def Print(self, pRoot):
# write code here
res=[]
queue=[]
if not pRoot:
return []
res.append([pRoot.val])
queue.append(pRoot)
while queue:
length=len(queue)
for i in range(length):
tmp=queue.pop(0)
if tmp.left:
queue.append(tmp.left)
if tmp.right:
queue.append(tmp.right)
if queue:
res.append([i.val for i in queue])
return res