【发布时间】:2020-06-26 04:19:23
【问题描述】:
给我一个标签列表L,我希望递归从L生成一个随机二叉树。
期望的行为是这样的:
generate(['A', 'B', 'C', 'D', 'E', 'F'])
可以给:
((('A', ('B', 'C')), ('D', 'E')), 'F')
注意叶子标签列表从左到右应该等于L。
我怀疑如何随机构造这棵树。这就是我目前所拥有的(我在随机索引处拆分标签列表。
def generate_tree(L):
split = randint(1, len(L)-1)
left = L[:split]
right = L[split:]
# call generate(left) and generate(right) based on some conditions
我被困住了。如果您能给我一些提示或帮助,我将不胜感激。
【问题讨论】:
-
你的二叉树看起来不是随机的
-
@kederrac 你是什么意思?我还没有生成一个。我提供的示例只是可能输出的示例。
-
@kederrac 因为从左到右的叶子标签列表应该等于
L,我猜你可以说它不是完全随机的。 -
为什么不随机排序?即使它必须是有序树,您也可以随机化插入顺序
-
如果结果是嵌套列表而不是元组就可以了吗?
标签: python python-3.x recursion binary-tree