如何检查一棵树是否为二叉搜索树?
—— Telegram 群聊中的某人
二叉搜索树是一棵有根树,其中:
- 每个顶点最多只能有一个左孩子和最多一个右孩子,
- 对于每个非叶子顶点 $x$,其左子树中的所有顶点都小于 $x$,且其右子树中的所有顶点都大于 $x$。
给你一棵拥有 $n$ 个顶点的树。这棵树在以某个顶点为根时,能否成为一棵二叉搜索树?如果可以,哪些顶点可以作为根?
输入格式
第一行包含一个整数 $n$ ($1 \le n \le 500000$) — 树中顶点的数量。
接下来的 $n - 1$ 行,每行包含两个整数 $u_i$ 和 $v_i$ ($1 \le u_i, v_i \le n$) — 树的边。
输出格式
如果这棵树不能成为一棵二叉搜索树,输出 -1。
否则,按升序输出所有可以作为根的顶点。
样例
输入样例 1
3 1 2 2 3
输出样例 1
1 2 3
输入样例 2
3 1 3 3 2
输出样例 2
1
输入样例 3
4 1 3 3 2 2 4
输出样例 3
-1
输入样例 4
4 1 2 1 3 1 4
输出样例 4
-1