繁体   English   中英

BST和Splay树中1…n键的插入操作的复杂性是什么?

[英]What is the complexity of insertion operation for 1…n keys in BST and Splay tree?

如果要按此顺序插入n个键1,2,…,n,

(一种)。 到普通的BST(二进制搜索树)

(b)。 到八卦树

在每种情况下(a),b)的复杂度是多少?

两种情况都为O(log n)吗? 还是(a)为O(log n)和(b)为O(M log n)?

根据Wikipedia Splay树文章,平均插入时间为O(log n),最坏的情况是摊销O(log n)。 因此,将所有项目插入Splay树的预期时间为O(n log n)。

二进制搜索树的大小写取决于您使用的是哪种BST。 对于原始BST,按顺序插入项目是最坏的情况,因为它会创建简并树-链表。 每次插入就是O(n)(其中n是树中的项目数)。 因此,插入所有项将需要O(n ^ 2)。

插入简并树是O(n),因为树本质上是一个链表。 依次插入数字[1, 2, 3]后,树如下所示:

1
 \
  2
   \
    3

如果然后要插入4 ,则代码必须先查看每个现有项1、2和3,然后再将4作为3的右子级添加。当您插入5 ,它必须再次查找在前四个项目。 每次插入都必须查看所有先前的项目。 插入n个项目时的比较总数为(n*(n-1))/2 ,即O(n ^ 2)。

如果您使用的是自平衡二叉搜索树,则插入为O(log n),而所有项目的插入将需要O(n log n)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM