python题目描述 对于存储在二叉链表中的二叉树root, 请补充完善如下函数,返回二叉树中节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如,对于如下二叉树,遍历后应得到 [[3],[20,9],[15,7]] 例如: 输入 结果 3 9 20 null null 15 7 3 20 9 15 7
时间: 2024-02-19 21:58:00 浏览: 70
请参考下面的代码实现:
```python
class Solution:
def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
res = []
queue = collections.deque()
queue.append(root)
level = 0
while queue:
level += 1
size = len(queue)
tmp = []
for i in range(size):
node = queue.popleft()
tmp.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
if level % 2 == 0:
res.append(tmp[::-1])
else:
res.append(tmp)
return res
```
其中,使用队列来进行二叉树的层序遍历,利用一个变量 level 来记录当前层数,如果是偶数层,则将当前层的节点值反转后加入结果列表 res 中。
阅读全文