题目:「力扣挑战赛」开幕式开始了,空中绽放了一颗二叉树形的巨型焰火。 给定一棵二叉树 root
代表焰火,节点值表示巨型焰火这一位置的颜色种类。请帮小扣计算巨型焰火有多少种不同的颜色。
思路:遍历的同时用哈希集合统计节点值。答案为哈希集合的大小。
代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int numColor(TreeNode root) {
Set<Integer> s = new HashSet<>();
dfs(s, root);
return s.size();
}
private void dfs(Set<Integer> s, TreeNode root) {
if (root == null)
return;
s.add(root.val);
dfs(s, root.left);
dfs(s, root.right);
}
}
性能:
时间复杂度o(n)
空间复杂度o(n)