给出一种算法的思路:
首先,对于一棵树,我们可以用递归的方式访问它的所有节点。对于每个节点,我们可以维护一个变量 $size$,表示它的子树大小。在递归访问它的子节点时,可以累加 $size$ 的值。
对于每个节点,我们还需要维护一个变量 $sum$,表示它所有子节点的子树大小之和。在递归访问它的子节点时,可以累加 $sum$ 的值。
当我们访问完一个节点的所有子节点后,就可以判断该节点是否满足题目要求。如果该节点不是叶子节点,并且它的子树大小与 $sum$ 相等,那么该节点就是符合要求的节点。
算法流程如下:
- 读入输入文件,建立树的邻接表。
- 递归访问树的每个节点,并维护 $size$ 和 $sum$。
- 当递归到某个节点时,如果该节点不是叶子节点,并且它的子树大小与 $sum$ 相等,就将该节点的编号输出到输出文件。
- 访问完整棵树后,结束程序。
以下是 C++ 的代码实现:
``` #include