如何从用列表列表表示的二叉树中删除叶子?



我有一个用嵌套列表表示的二叉树: [[[[], []], [[], []]], [[], [], []]]

我想编写一个函数,通过递归从中删除叶子(空列表(。

我尝试过这个,但它甚至没有运行。有人可以帮我如何开始吗?

def removeLeaf(tree):
for i in tree:
if type(tree[i]) is list:
return removeLeaf(tree[i])
elif tree[i] == []:
tree.pop(i)
return removeLeaf(tree)

输入:

[[[], []], [[]], [[], [[], [], []]]

输出:

[[], []], []]

你不应该在if的第一部分调用resursion,因为你正在删除作为叶子的空列表。此外,必须更改 for 句子。 代码如下:

def removeLeafs(tree):
for i in range(0,len(tree)-1):
if len(tree[i]) == 0:
tree.pop(i)
else
removeLeafs(tree[i])

最新更新