如何为二元表达式树的固定数量的叶子置换所有可能的树结构?

时间:2011-10-18 06:12:51

标签: algorithm tree

如何为二叉树的固定数量的叶子排列所有可能的树结构? 哪种算法构建所有可能的树结构? 所有可能的树结构的数量是多少?

对于二进制表达式树,字母必须是叶

例如(a + b)* c

                        *
                      +   c
                    a   b

叶数是3

我们希望置换到其他结构,例如

                   *            
                 a   +   
                    b  c

我想要修正顺序,相同的顺序,因为我将在后续过程中置换运算符节点。期待结构。运营商节点的数量是动态的

如果您想挑战更多,可以使用动态订单 我也想知道动态订单算法

现在尝试先修改订单

我注意到的另一个约束是每个内部节点应该有左右叶

1 个答案:

答案 0 :(得分:0)

我的想法是递归地交换除叶子之外的每个级别的左右节点并在每次交换时保存 我不知道是否正确,但我觉得没有遗失