【问题标题】:How to remove leafs from a binary tree represented with list of lists?如何从用列表列表表示的二叉树中删除叶子?
【发布时间】:2018-10-22 01:23:57
【问题描述】:

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

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

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

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)

输入:

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

输出:

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

【问题讨论】:

    标签: recursion binary-tree binary-search-tree nested-lists


    【解决方案1】:

    您不应该在 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])
    

    【讨论】:

    • 您的代码出现此错误:IndexError: list index out of range
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多