「力扣挑战赛」开幕式开始了,空中绽放了一颗二叉树形的巨型焰火。
给定一棵二叉树 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

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:

vector<int> a = vector<int>(1001,0);
void dg(TreeNode* root){
if(root){
a[root->val] = 1;//进行递归循环 将树中的值存入vector中 并且不重复
if(root->left){
dg(root->left);
}
if(root->right){
dg(root->right);
}
}
}

int numColor(TreeNode* root) {
dg(root);
int sum = 0;
for(int i =0; i<a.size();i++){
if(a[i]){
sum++;
}
}
return sum;
}
};