题目链接:【HDU】5574 Colorful Tree 题目大意:对一个子树染色,询问一个子树的颜色数。 题目分析: set set维护每种颜色所在的 dfs dfs序区间,修改均摊 nlogn nlogn。 #include <bits/stdc++.h>using namespace std ;typedef long long LL ;typedef pair < int , i
题目描述: 给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。示例 1:1/ \2 3/ / \4 2 4/4下面是两个重复的子树:2/4和4因此,你需要以列表的形式返回上述重复子树的根结点。 解决方法: /*** Definition for a binary tree n
官方题解有很多高大上的方法,我这就将一个最容易想到、最直接的方法吧,比较详细(基本上没有压缩代码),有不懂的可以在评论区问我~~~若有不足欢迎大佬斧正(>人<;) 首先让我们来看看这个二叉树的题目(如下图) 看完题目,明确了一棵树的子树是到叶子节点结束的,这里抛出我开始做题的想法 如何找到子树的起始点?找到起始节点后,只能说明起始节点相同,万一树 s 里的子树结构里面有很多与树 t
解题思路 深度优先搜索。 相关代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val
这是别人问我的题,所以没有题目链接,名字也是我随便起的。 有一棵包含 n n n 个节点的树,节点编号从 1 1 1 到 n n n,以 1 1 1 为根,每条边都有一个权值。给你 m m m 次询问,每次询问一个子树,在子树中对每种边权的值 c c c 统计出现次数 c n t c cnt_{c} cntc,求 ∑ ( c ⋅ c n t c ) 2 \sum(c\cdot