leetcode 103. 二叉树的锯齿形层次遍历
1. 见注释.
# 参考之前另一道层次遍历的题
class Solution:
def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
layers = []
layer = 0
next_layer = [root]
while next_layer:
# layers.append([])
layer_length = len(next_layer)
temp = [] # temp 用来保存这一层的全部的节点值
for i in range(layer_length):
node = next_layer.pop(0)
# 1. 我觉得正确的做法是在这里来调整,但是总是有点模糊。
# if layer % 2 == 0:
# node = next_layer.pop(0)
# else:
# node = next_layer.pop()
# layers[layer].append(node.val)
temp.append(node.val)
if node.left:
next_layer.append(node.left)
if node.right:
next_layer.append(node.right)
# 2. 但是最终结果这里也是可以调整的。
if layer % 2 == 0:
layers.append(temp)
else:
layers.append(temp[::-1])
layer += 1
return layers
本文标题:leetcode 103. 二叉树的锯齿形层次遍历
本文链接:https://www.haomeiwen.com/subject/zrdnthtx.html
网友评论