题目描述
本步骤要求给定四个数字, 生成四个数字能构成的所有表达式树 。
本题要求生成的表达式树有次序,一个模糊的思路如下:
void gen_expression_tree(BiTree &t, int num)
{
for(int i = 1; i < num; i++) {
t->data = “+-*/”中的一者 //按次序枚举
gen_expression_tree(t->lchild, i);
gen_expression_tree(t->rchild, num - i);
}
}
num是树中的数字个数。当num=1时,为叶子结点,结点的data域应该是数字,数字的出现次序也是有序的。
输入
输入仅一行,四个由空格分开的整数,整数的值在[1,13]之间。
输出
按序输出四个数字能构成的所有表达式树,每个表达式树一行,输出表达式树的全括号表达式。一个硬性的要求是必须采用类似上面的递归算法。
例如输入1 2 3 4时,应该产生的输出前面部分如下(因为空间限制,我们在sample Output部分给出了输出的最后部分,但整体上依然不完整):
(1+(2+(3+4)))
(1+(2+(4+3)))
(1+(2+(3-4)))
(1+(2+(4-3)))
(1+(2+(3*4)))
(1+(2+(4*3)))
(1+(2+(3/4)))
(1+(2+(4/3)))
(1+(3+(2+4)))
(1+(3+(4+2)))
(1+(3+(2-4)))
(1+(3+(4-2)))
(1+(3+(2*4)))
(1+(3+(4*2)))
(1+(3+(2/4)))
(1+(3+(4/2)))
(1+(4+(2+3)))
(1+(4+(3+2)))
(1+(4+(2-3)))
(1+(4+(3-2)))
(1+(4+(2*3)))
(1+(4+(3*2)))
(1+(4+(2/3)))
(1+(4+(3/2)))
(1+(2-(3+4)))
题目是这样的,输出答案这里只有一部分,
请问这道题要怎么做,有人可以提供一个思路吗,或者代码,一部分也可以