数据结构与算法分析C语言描述第二版第79页

这一节讲解的是二叉查找树,书中这一页有一个地方让我比较疑惑,原文是:

“如果向一棵预先排序的树输入数据,那么一连串Insert操作将花费二次时间,而链表实现的代价会非常巨大,因为此时的树将只由那些没有左儿子的节点组成。”

这里为什么是花费二次时间,这就是我的疑惑点,然后在知乎找到了答案。该回答简单理解就是,因为是预先排好序的树,所以我们可以想象我们输入的数是一组从小到大排好序的数列,然后逐个插入,那么按照这样的情况,我们每一次插入都是插入在上一个节点的右子树上面,此时这棵树就退化成了一个简单的链表,而我们知道,链表的一次插入操作的时间是O(N),那么,一连串的Insert操作自然花费的就是二次时间了。

参考:https://www.zhihu.com/question/333857802

原文地址:https://www.cnblogs.com/fanlumaster/p/13755987.html