Python 生成所有n叶任意树
我需要为给定数量的叶节点生成所有可能的任意树拓扑,限制是每个非叶、非根节点必须有一个兄弟节点(以防止无限递归)。特别是,我正在寻找一种干净的Pythonic方法来实现这一点(尽管欢迎任何和所有的建议) 例如,对于n=3,我要寻找以下输出:Python 生成所有n叶任意树,python,tree,binary-tree,Python,Tree,Binary Tree,我需要为给定数量的叶节点生成所有可能的任意树拓扑,限制是每个非叶、非根节点必须有一个兄弟节点(以防止无限递归)。特别是,我正在寻找一种干净的Pythonic方法来实现这一点(尽管欢迎任何和所有的建议) 例如,对于n=3,我要寻找以下输出: (1 2 3) ((1)2 3) (1(2)3) (1 2(3)) ((1)(2)3) ((1)2(3)) (1(2)(3)) ((1)(2)(3)) ((1 2)3) ((1)2)3) 特别是,(1)是n=1的有效树,但((1))不是,因为它包含一个没
- (1 2 3)
- ((1)2 3)
- (1(2)3)
- (1 2(3))
- ((1)(2)3)
- ((1)2(3))
- (1(2)(3))
- ((1)(2)(3))
- ((1 2)3)
- ((1)2)3)
将任意树转换为二叉树时,任意树中的叶对应于二叉树中没有剩余子节点的节点。因此,解决方案似乎可以从一组叶节点(定义为只有右分支)和内部节点(至少需要左分支)开始,并枚举可能的组合。但是,我不太清楚如何找到完整的解决方案。我没有找到一种明显的方法来枚举这些树。我相信这个问题可以解决,如果你也能解决“有多少种方法可以在n的字符串中插入m对匹配的括号,这样就没有匹配的括号直接插入到另一个括号中”;也许会有帮助。谢谢你看这个,埃里克!我已经看了一点插入匹配的paren,但是我会再考虑一下,如果我有什么想法,我会更新这个问题。