CF1800G Symmetree

题目描述

Kid 得到了一棵有 $n$ 个结点的树,根节点为 $1$。由于他非常喜欢对称的物体,Kid 想知道这棵树是否是对称的。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1800G/d38e017cff0afa58cfae306135ac70824868e32a.png) 例如,上图中的树是对称的。![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1800G/c7cdf18345f431d81f3f4995e8b80d43eac66d45.png) 而下图中的树不是对称的。形式化地说,如果存在一种对子节点的排列方式,使得: - 根节点最左侧子节点的子树与最右侧子节点的子树互为镜像; - 根节点次左侧子节点的子树与次右侧子节点的子树互为镜像; - 以此类推; - 如果根节点的子节点数为奇数,则中间子节点的子树本身也必须是对称的。 那么这棵树就是对称的。

输入格式

输入的第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 每个测试用例的第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$),表示树的结点数。 接下来的 $n-1$ 行,每行包含两个整数 $u$ 和 $v$($1 \le u, v \le n$,$u \neq v$),表示一条连接结点 $u$ 和 $v$ 的边。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

输出 $t$ 行,每行对应一个测试用例的答案。如果该树是对称的,输出 "YES",否则输出 "NO"。 你可以以任意大小写输出答案(例如 "yEs"、"yes"、"Yes" 和 "YES" 都会被认为是肯定答案)。

说明/提示

由 ChatGPT 4.1 翻译