美好的一天!
我对二叉搜索树插入方法的时间复杂性有疑问。我读到了一些有关这方面的答案,但有些人彼此不同。二进制搜索树插入方法的时间复杂度是平均情况下的O(log n),最坏情况下是O(n)吗?或者是平均情况下的O(n log n)和最坏情况下的O(n ^ 2)吗?什么时候它在平均情况下变成O(n log n)而在最坏的情况下变成O(n ^ 2)?
答案 0 :(得分:0)
在平均情况下,是一个插入操作的O(log n),因为它包含一个测试(常量时间)和一个递归调用(要访问的树中节点总数的一半),这就产生了问题在恒定时间内变小。因此,对于n个插入操作,avg情况是O(nlogn)。关键是操作需要时间与树的高度成正比。平均而言,1次插入操作为O(logn),但在最坏的情况下,高度为O(n) 如果您正在进行n次操作,则avg为O(nlgn)且最差为O(n ^ 2)