请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
例如:
给定二叉树: [3,9,20,null,null,15,7],

# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
stack, res = [root], []
layer = 0
while stack:
layer+=1
#lay代表下一层,layval存储当前层的值
next_lay, layval = [], []
for node in stack:
#存储当前层的值,由于当前层已经是按照从左到右或者从右到左拍好,所以直接取值就满足题目要求
layval.append(node.val)
if node.left:
next_lay.append(node.left)
if node.right:
next_lay.append(node.right)
stack= next_lay
#res.append(layval)
if layer%2!=0:
res.append(layval)
else:
res.append(layval[::-1])
return res
该博客介绍了一个Python实现的函数,用于按照之字形顺序打印二叉树。函数首先初始化一个栈,并通过迭代每一层节点,根据当前层数的奇偶性决定节点的添加顺序,最终达到题目要求的打印效果。
347

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



