59.按之字形顺序打印二叉树
问题:
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
解决:
思想:
其要求输出的样式是:[[1], [3,2], [4,5,6,7]]。这道题不仅要求按序输出节点值,还要求包含以下信息:
- 每一层所包含的树节点;
- 偶数层的树节点需倒序。
我们同样可以利用列表存储节点,但不同的是列表每次只存储一层的节点,在遍历当前层节点的同时,存储下一层的节点,以此类推。面对要求的偶数层倒序,在获取节点的值的时候就倒序存入。
python代码:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def Print(self, pRoot):
# write code here
result=[]
if not pRoot:
return result
curLayerNodes=[pRoot]
reverseFlag=True
while curLayerNodes:
curLayerValues=[]
nextLayerNodes=[]
reverseFlag=not reverseFlag
for node in curLayerNodes:
curLayerValues.insert(0,node.val) if reverseFlag else curLayerValues.append(node.val)
if(node.left):
nextLayerNodes.append(node.left)
if(node.right):
nextLayerNodes.append(node.right)
result.append(curLayerValues)
curLayerNodes=nextLayerNodes
return result

本文介绍了一种特殊的二叉树打印方式——之字形打印。通过详细解析算法思路,实现了按照从左到右、从右至左交替打印各层节点的功能。文章提供了Python代码实现,展示了如何在遍历过程中根据层的奇偶性决定节点值的插入位置。

被折叠的 条评论
为什么被折叠?



