英文原文
中文题目
「力扣挑战赛」开幕式开始了,空中绽放了一颗二叉树形的巨型焰火。
给定一棵二叉树 `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+无序集合
[]# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def numColor(self, root: TreeNode) -> int: def dfs(rt): if rt: us.add(rt.val) dfs(rt.left) dfs(rt.right) us = set() dfs(root) return len(us)
[]/** * 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: unordered_set<int> us; void dfs(TreeNode * rt) { if (rt) { us.insert(rt->val); dfs(rt->left); dfs(rt->right); } } int numColor(TreeNode* root) { dfs(root); return (int)us.size(); } };
[]/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { Set<Integer> us = new HashSet<>(); public void dfs(TreeNode rt) { if (rt != null) { us.add(rt.val); dfs(rt.left); dfs(rt.right); } } public int numColor(TreeNode root) { dfs(root); return us.size(); } }
统计信息
通过次数 | 提交次数 | AC比率 |
---|---|---|
3345 | 4063 | 82.3% |
提交历史
提交时间 | 提交结果 | 执行时间 | 内存消耗 | 语言 |
---|