LeetCode-LCR151 彩灯装饰记录Ⅲ

本文最后更新于:2025年2月17日 下午

LeetCode-LCR151 彩灯装饰记录Ⅲ

题目描述

一棵圣诞树记作根节点为 root 的二叉树,节点值为该位置装饰彩灯的颜色编号。请按照如下规则记录彩灯装饰结果:

  • 第一层按照从左到右的顺序记录
  • 除第一层外每一层的记录顺序均与上一层相反。即第一层为从左到右,第二层为从右到左。

示例 1:

img
1
2
输入:root = [8,17,21,18,null,null,6]
输出:[[8],[21,17],[18,6]]

提示:

  • 节点总数 <= 1000

题解

按层遍历+双端队列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def decorateRecord(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
queue = collections.deque([root])
flag = True
ans = []
while queue:
temp = []
for _ in range(len(queue)):
if flag: # 从左到右
node = queue.popleft()
temp.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
else: # 从右到左
node = queue.pop()
temp.append(node.val)
# 注意这里的添加顺序
if node.right:
queue.appendleft(node.right)
if node.left:
queue.appendleft(node.left)
flag = not flag
ans.append(temp)

return ans

LeetCode-LCR151 彩灯装饰记录Ⅲ
https://furthur509.github.io/2025/02/17/LeetCode-LCR151 彩灯装饰记录Ⅲ/
作者
Yang Mingxin
发布于
2025年2月17日
许可协议