> 文章列表 > LCP 44. 开幕式焰火

LCP 44. 开幕式焰火

LCP 44. 开幕式焰火

题目链接

LCP 44. 开幕式焰火 easy

题目描述

「力扣挑战赛」开幕式开始了,空中绽放了一颗二叉树形的巨型焰火。

给定一棵二叉树 root代表焰火,节点值表示巨型焰火这一位置的颜色种类。

请帮小扣计算巨型焰火有多少种不同的颜色。

示例 1:

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

输出:3

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

示例 2:

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

输出:1

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

提示:

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

解法:dfs + 哈希表

dfs 遍历整棵树,用哈希表记录结点。最后返回哈希表的 size,即共有 size种不同的颜色。

时间复杂度: O(n)O(n)O(n)

C++代码:


class Solution {
public:unordered_set<int> uset;void dfs(TreeNode* root){if(root == nullptr) return;uset.insert(root->val);dfs(root->left);dfs(root->right);}int numColor(TreeNode* root) {dfs(root);return uset.size();}
};