二叉树的根(C++)
题目描述
什么叫二叉树?这个应该是每个人都知道的。在本题中,我们的二叉树是有根的:对于每个节点,它至多有左右两个子节点(可以为空),并且每个子树也都是二叉树。
如果无视有根二叉树中的父子关系,那么它就变成了无根树。现在我们给出任意的无根树,想让你找到这样的节点:存在某个有根二叉树的根为这个节点,且无视有根二叉树中的父子关系后,所变成的无根树恰好为给出的无根树。
由于有可能无解,也有可能有很多解,你需要对这些情况作出判断。
输入输出格式
输入格式:
第一行为一个正整数n,代表树中点的个数。
接下来n-1行,每行一对非负整数a[i],b[i],表示a[i]与b[i]之间连有一条边。
输出格式:
第一行为一个非负整数,表示解的数量。
如果解的数量不为0,那么第二行有若干正整数,每个表示一个答案,且按升序排列。
输入输出样例
输入样例:
输入1:
3
1 2
2 3
输入2:
4
1 2
1 3
1 4
输出样例:
输出1:
3
1 2 3