给定四个数字, 生成四个数字能构成的所有表达式树
一个模糊的思路如下: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域应该是数字,数字的出现次序也是有序的。
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)))
......