首页 > 代码库 > [leetcode tree]103. Binary Tree Zigzag Level Order Traversal
[leetcode tree]103. Binary Tree Zigzag Level Order Traversal
Given a binary tree, return the zigzag level order traversal of its nodes‘ values. (ie, from left to right, then right to left for the next level and alternate between).
For example:
Given binary tree [3,9,20,null,null,15,7]
,
3 / 9 20 / 15 7
return its zigzag level order traversal as:
[ [3], [20,9], [15,7] ]
之字形层序遍历树
思路:设立一个标志位,当这个标志位为0时候,从左到右打印,当标志位为1时候,从右往左打印,每遍历一层,标志位变一次
1 class Solution(object): 2 def zigzagLevelOrder(self, root): 3 res,level = [],[root] 4 flag = 0 5 while root and level: 6 if not flag: 7 res.append([r.val for r in level]) 8 else: 9 res.append([r.val for r in level[::-1]]) 10 flag = 1-flag 11 pair = [(v.left,v.right) for v in level] 12 level = [v for lr in pair for v in lr if v] 13 return res
改:
1 class Solution(object): 2 def zigzagLevelOrder(self, root): 3 res,level,flag= [],[root],1 4 while root and level: 5 res.append([r.val for r in level[::flag]]) 6 flag *= -1 7 pair = [(v.left,v.right) for v in level] 8 level = [v for lr in pair for v in lr if v] 9 return res
[leetcode tree]103. Binary Tree Zigzag Level Order Traversal
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。