【发布时间】:2021-03-14 21:39:09
【问题描述】:
假设我有一个像这样的金字塔,但更大
2
4 9
4 9 6
7 7 8 9
并想将其转换为二叉树,这意味着我们实际上想要一棵像这样的树:
2
4 9
4 9 9 6
7 7 7 8 7 8 8 9
在列表格式中,结果将是
2,4,9,4,9,9,6,7,7,7,8,7,8,8,9
我尝试了以下方法,但它只适用于长度为 4 的树。作为输入,我在 txt 文件中取一棵树。
def give_input(name):
index = 0
lis_of_listas = []
f = open(name, "r")
for x in f:
x = x.replace(' ', '')
x = x.replace('\n', '')
lista = [int(i) for i in list(x)]
if (index > 1 and index % 2 == 0):
podlista = lista[1:-1]
podpodlista = []
for i in podlista:
podpodlista.append(i)
podpodlista.append(i)
podpodlista.append(lista[-1])
podpodlista.insert(0, lista[0])
elif (index > 1 and index % 2 == 1):
podlista = lista[1:-1]
print(len(podlista)/2)
podlista1 = podlista[0:int(len(podlista) / 2)]
podlista2 = podlista[int(len(podlista) / 2):len(podlista)]
podpodlista = []
for i in podlista1:
podpodlista.append(i)
podpodlista.append(i)
podpodlista.append(podlista1[-1])
podpodlista.append(podlista2[0])
for j in podlista2:
podpodlista.append(j)
podpodlista.append(j)
podpodlista.append(lista[-1])
podpodlista.insert(0, lista[0])
if index <= 1:
lis_of_listas.append(lista)
else:
lis_of_listas.append(podpodlista)
index += 1
return [item for sublist in lis_of_listas for item in sublist]
【问题讨论】:
-
您能否详细说明当您说“要将其转换为列表以便单独处理每个节点”时的意思?您是如何从示例树获得所需的输出的?
-
这甚至不是您展示的二叉树。中间的 9 应该是上面 4 的右孩子,上面 9 的左孩子,还是两者兼而有之?所需输出中的三个额外值是从哪里来的?
-
我编辑了我的问题,其实你是对的@jasonharper,我想把它转换成二叉树
标签: python binary-tree