1547: 序列树
内存限制:10 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:1
解决:1
题目描述
我们可以按照如下规则来给二叉树编号:
空树的编号是0;
单结点的树的编号是1;
所有包含m个结点的二叉树的编号比任意一个包含m+1个结点的二叉树的编号小;
任何一个包含m个结点,并且有左子树(称作L)和右子树(称作R)的二叉树,如果它的编号为n,那么所有包含m个结点的编号大于n的二叉树或者它的左子树的编号不小于L的编号,或者它的右子树的编号大于R的编号。
下面列出的是前10个二叉树和编号为20的二叉树:
你的任务是根据给定的编号,输出对应的二叉树。
输入
输入只有一行,包含一个整数n(1 <= n <= 500,000,000)。
输出
输出只有一行,按照如下规则,输出对应编号的二叉树:
如果一棵二叉树没有子树,应当输出X;如果一棵二叉树有左子树L和右子树R,应当输出(L')X(R'),其中L'和R'分别代表左子树L和右子树R;
如果左子树为空,输出X(R');
如果右子树为空,输出(L')X。
样例输入 复制
20
样例输出 复制
((X)X(X))X