解题思路
核心思路采用深度优先搜索(DFS)结合动态规划求解。对于树上的每个节点,定义两种状态:选择该节点或不选择该节点。通过递归计算子树的状态,自底向上得到最优解。
具体实现方法如下。对每个节点维护两个值:不选该节点时的最大亮度和选该节点时的最大亮度。状态转移关系为:若选择当前节点,则其左右子节点都不能选,亮度为当前值加上左右子树不选状态的亮度;若不选当前节点,则左右子节点可选可不选,取其最大值之和。最终答案为根节点两种状态的最大值。
由于输入采用层序遍历数组表示二叉树,可以直接在数组上进行DFS,利用索引关系访问父子节点。对于索引为i的节点,其左子节点索引为2i+1,右子节点索引为2i+2。当索引超出范围或节点值为0时,表示该位置无节点。
复杂度分析
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写