leetcode LCP 开幕式焰火

LCP 44. 开幕式焰火 - 力扣(LeetCode)

「力扣挑战赛」开幕式开始了,空中绽放了一颗二叉树形的巨型焰火。 给定一棵二叉树 root 代表焰火,节点值表示巨型焰火这一位置的颜色种类。请帮小扣计算巨型焰火有多少种不同的颜色。

示例 1:

输入:root = [1,3,2,1,null,2]

输出:3

解释:焰火中有 3 个不同的颜色,值分别为 1、2、3

示例 2:

输入:root = [3,3,3]

输出:1

解释:焰火中仅出现 1 个颜色,值为 3

提示:

  • 1 <= 节点个数 <= 1000
  • 1 <= Node.val <= 1000

为了解决这个问题,我们需要遍历二叉树并收集所有节点的值,然后计算这些值中不同的数量。我们可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来遍历二叉树。这里,我将使用DFS来解决这个问题。

步骤

  1. 定义一个集合来存储所有不同的节点值。
  2. 使用DFS遍历二叉树,将每个节点的值添加到集合中。
  3. 遍历结束后,集合的大小即为不同颜色的数量。
python 复制代码
class Solution:
    def numColor(self, root: TreeNode) -> int:
        # 初始化一个空集合s,用于存储遍历过程中遇到的所有不同颜色
        s = set()
        
        # 定义一个深度优先搜索(DFS)的辅助函数
        def dfs(node: Optional[ListNode]) -> None:
            # 如果当前节点为空,直接返回,不进行任何操作
            if node is None:
                return
            
            # 将当前节点的颜色(值)添加到集合s中
            # 由于集合的特性,相同的值不会被重复添加
            s.add(node.val)
            
            # 递归地对当前节点的左子节点进行DFS
            dfs(node.left)
            
            # 递归地对当前节点的右子节点进行DFS
            dfs(node.right)
        
        # 从根节点root开始,调用DFS函数进行遍历
        dfs(root)
        
        # 遍历结束后,集合s中存储的就是所有不同的颜色
        # 返回集合s的大小,即不同颜色的数量
        return len(s)

解释

  • 我们首先定义了一个集合 values 来存储不同的节点值。
  • 然后定义了一个 dfs 函数来递归地遍历二叉树。在 dfs 函数中,我们首先检查当前节点是否为空,如果为空则返回。否则,我们将当前节点的值添加到集合中,并递归地遍历其左右子树。
  • 最后,我们从根节点开始调用 dfs 函数,并返回集合 values 的大小,即不同颜色的数量。

这个方法的时间复杂度是 O(n),其中 n 是二叉树的节点个数,因为我们需要遍历每个节点一次。空间复杂度是 O(n),因为最坏情况下,集合 values 可能包含所有节点的值。

相关推荐
你怎么知道我是队长16 小时前
C语言---枚举变量
c语言·开发语言
李慕婉学姐16 小时前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
吃茄子的猫16 小时前
quecpython中&的具体含义和使用场景
开发语言·python
じ☆冷颜〃16 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
云栖梦泽16 小时前
易语言中小微企业Windows桌面端IoT监控与控制
开发语言
数据大魔方16 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
POLITE316 小时前
Leetcode 23. 合并 K 个升序链表 (Day 12)
算法·leetcode·链表
APIshop16 小时前
Python 爬虫获取 item_get_web —— 淘宝商品 SKU、详情图、券后价全流程解析
前端·爬虫·python
楚来客16 小时前
AI基础概念之八:Transformer算法通俗解析
人工智能·算法·transformer
风送雨16 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai