【发布时间】:2019-10-30 19:03:51
【问题描述】:
我正在尝试创建一个函数“generate_tree(L)”,它接受一个字母列表并返回一个二叉树。每个字母都是一片叶子。 例如,使用列表:
L = ['A', 'B', 'C']
该函数应随机返回以下树之一:
['A',['B', 'C']] or [['A','B'], 'C']
第一个例子代表这棵树:
嗯,情况不太好 - 我有一个解决方案,但它也返回了很多空列表,而且一团糟。 这是我迄今为止的尝试:
from random import randint
def generate_tree(L):
n = len(L)
if not L: #base case yield empty
yield L
return
randomSplit = randint(1,n-1)
leftList = L[0:randomSplit]
rightList = L[randomSplit:]
List = ['A','B','C']
list(generate_tree(L))
我对 randomSplit 的尝试是将列表分成两个随机非空位置的列表:
['A','B','C'] --> leftList: ['A'], rightList: ['B','C']
我知道我需要递归地发送 leftList 和 rightList,但我做不到。我很想你对这个问题的看法
【问题讨论】: