有人可以向我解释构建BST的最坏情况运行时间是n ^ 2吗?我问我的教授,我收到的唯一反馈是
“因为树与输入的大小成线性关系。成本为1 + 2 + 3 + 4 + ... +(n-1)。”
有人可以用不同的方式解释这个吗?她的解释让我觉得它是O(n)....
答案 0 :(得分:0)
我认为最坏的情况发生在输入已经排序时: A,B,C,d,E,F,G,H。 这就是为什么你可能想要随机置换输入序列(如果适用)。
答案 1 :(得分:0)
最坏情况下的运行时间与输入的平方成正比,因为BST是不平衡的。不平衡的BST可以表现出简并结构:在最坏的情况下,是单链表。构造此列表将要求每个插入都沿着增长列表的全长进行,以到达叶节点以添加新叶。
例如,尝试在数据上运行算法,该算法的顺序正好相反,因此每个新节点必须成为树的新的最左边节点。
只有输入数据已经排序,才能在线性时间内构建BST(即使是平衡的!)。此外,这是使用利用顺序的特殊算法完成的;不是通过执行N次插入。
答案 2 :(得分:0)
我猜测1 + 2 + 3 + 4 + ... +(n-1)插入步骤是明确的(对于反向排序列表)。
你应该对这个步骤是二次的这个想法感到满意。考虑运行算法两次并计算步数:
[1 + 2 + 3 + 4 + ... +(n-1)] + [1 + 2 + 3 + 4 + ... +(n-1)] = [1 + 2 + 3 + 4 + ... +(n-1)] + [(n-1)+ ... + 4 + 3 + 2 + 1] = n + n + ... n = n ^ 2
因此,一次运行需要0.5 * n ^ 2步。