这是作业,我想起来有困难。请给我一些关于递归和DP解决方案的想法。多谢
生成并打印所有结构不同的完整二进制文件
n 个叶子的树,以点括号的形式,
“完整”意味着所有内部(非叶)节点都有
正好有两个孩子。
例如,有5个不同的满二叉树
每片有 4 片叶子。
在Python中你可以这样做
def gendistinct(n):
leafnode = '(.)'
dp = []
newset = set()
newset.add(leafnode)
dp.append(newset)
for i in range(1,n):
newset = set()
for j in range(i):
for leftchild in dp[j]:
for rightchild in dp[i-j-1]:
newset.add('(' + '.' + leftchild + rightchild + ')')
dp.append(newset)
return dp[-1]
alltrees = gendistinct(4)
for tree in alltrees:
print tree
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)