微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

此删除功能的时间复杂度是多少?

如何解决此删除功能的时间复杂度是多少?

我试图在Python中找到此函数的时间复杂度,但我真的不明白如何解释if / else语句。我只见过循环。另外,这是一个递归函数,我不确定这是否会影响大哦符号。

def delete(root,data):
    if root is None:                              O(1)
        return node
    if data < root.data:                        O(1)
        root.left = delete(root.left,data)  
    elif data > root.data:                        O(1)
        root.right = delete(root.right,data)
    else:                                         O(n)

        if root.left == None:                   O(n)
            temp = root.right
            self = None
        return temp
        elif root.right == None:                  O(n)
            temp = root.left
            self = None
        return temp
        else:                                     O(n)
            temp = minval(node.right)
            root.data = temp.data
            root.right = delete(root.right,temp.data)

我在代码方面写了我认为每个语句的时间复杂度。我相信这个函数的时间复杂度为O(n ^ 2)。如果我错了,请告诉我!

解决方法

复杂度为O(log n)。

所有if语句均为O(1)。唯一的重复来自递归调用。递归在树的一半(root.leftroot.right)上进行,因此每次迭代将问题的大小平均分为一半。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。