有一颗装满彩灯的二叉树,树的每个节点代表一个灯泡。每个灯泡有三种颜色状态:红色(用整数1表示)、绿色(用整数2表示)和蓝色(用整数3表示)。每个节点上都配有一个开关,当按下某个节点的开关时,以该节点为根节点的子树上所有节点的灯泡颜色都会根据当前的颜色按照“红 → 绿 → 蓝 → 红 → …”的循环切换顺序切换一次颜色。
给定二叉树的初始颜色状态initial和目标颜色状态target,两者都以层序遍历的一维整数数组的形式表示,数组元素对应二叉树层序遍历的节点的颜色。如果某个节点在二叉树中不存在,则在数组中使用0表示。
目标是计算将二叉树从初始颜色状态initial切换到目标颜色状态target所需的最少开关切换次数。
有一棵二叉树,每个节点上装有一盏彩灯。彩灯有红色、绿色、蓝色三种颜色,分别用整数 1、2、3 表示。颜色切换按照 红色→绿色→蓝色→红色 的循环顺序进行。
每个节点上还配有一个开关。按下某个节点的开关后,以该节点为根的子树内所有节点都会按照上述循环顺序切换一次颜色。
给定两个长度为 n 的数组 initial 和 target。它们按层序遍历顺序记录二叉树的节点颜色,数组下标从 0 开始;若某个位置的节点不存在,则对应元素为 0。
请计算最少需要按下多少次开关,才能使所有节点的颜色从 initial 状态变为 target 状态。
约束条件:
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册