【问题标题】:Time Complexity of a Binary Search Tree Insert method二叉搜索树插入方法的时间复杂度
【发布时间】:2014-10-16 21:08:15
【问题描述】:

美好的一天!

我有一个关于二叉搜索树插入方法的时间复杂度的问题。我阅读了一些关于此的答案,但有些答案彼此不同。二叉搜索树插入方法的时间复杂度在平均情况下是 O(log n),在最坏情况下是 O(n)?还是平均情况为 O(n log n) 而最坏情况为 O(n^2)?什么时候平均为O(n log n),最坏情况为O(n^2)?

【问题讨论】:

  • 尝试阅读the Wikipedia article
  • 对于基本的二叉树,如果树是平衡的,则插入是 O(log n),如果树是最大不平衡的(即链表)则降级为 O(n)
  • 对于1插入操作,平均情况是O(lgn),最坏情况是O(n)。对于n 插入操作,平均情况是O(nlgn),最坏情况是O(n^2)。但通常人们指的是 1 次插入操作的复杂性。

标签: java algorithm insert binary-search-tree


【解决方案1】:

在平均情况下,1 次插入操作为 O(log n),因为它由一个测试(恒定时间)和一个递归调用(访问树中节点总数的一半)组成,这使得问题在恒定时间内变小。因此对于 n 次插入操作,平均情况为 O(nlogn)。关键是操作需要的时间与树的高度成正比。平均而言,1 次插入操作是 O(logn),但在最坏的情况下,高度是 O(n) 如果您正在执行 n 次操作,则 avg 为 O(nlgn) 最差为 O(n^2)

【讨论】:

    猜你喜欢
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多