各种数据结构的复杂度
来源:互联网 发布:盗墓笔记坐骑进阶数据 编辑:程序博客网 时间:2024/05/29 16:09
1.二叉搜索树
定义:
1)搜索(与根元素比较大小,然后再决定左子树还是右子树,后面的找最大元素和找最小元素是一样的)、插入(像find一样找到合适的位置,进行插入)、删除、找最大元素、找最小元素的复杂度等于树高,期望,最坏(数列有序,树退化成线性表)。
删除怎么删除呢?
分为三种情形:
a.要删除的节点是叶子节点,则直接删除。
b.有一个孩子节点,则该节点可以在其父节点调整指针绕过该节点后被删除。如下所示:
c.如果被删除的节点,有两个儿子呢?则如下图所示:这点非常重要。切记,切记!!
2)构建二叉树:最差时间复杂度为。例如,若该组数值是有序的(从小到大),则建造出来的二叉查找树的所有节点,都没有左子树。自平衡二叉查找树可以克服上述缺点,其时间复杂度为O(nlog n)
关于树或二叉树的一些结构上的定理:
a.一棵树由N个节点,N-1条边组成。
b.关于树的深度和高度的定义见下:
备注:高度是从下往上累加的,深度是从上往下累加的,从0还是从1开始累加看题目。对同一个树而言,树的高度和深度是相同的概念,但对于结点而言是不同的概念,其深度和高度是不同的,计算的话就严格按照定义来!
c.
d.
2.二叉堆
二叉堆是完全二叉树!!!
a.二叉堆的性质,对于位置i上的元素,左儿子在位置2i上,右儿子在2i+1上,父亲在i/2上。
b.插入操作,单次插入最坏为O(logN),平均来看为O(1)。
记住,插入操作,使用上滤策略!!!
c.DeleteMin操作
记住,用下滤操作。!!!
平均和最坏时间复杂度都为O(logN)
d.BuildHeap
构建堆的时间复杂度为O(N).
0 0
- 各种数据结构的复杂度
- 各种算法和数据结构的复杂度
- 数据结构与算法之各种排序算法的复杂度
- 数据结构-各种排序方式的时空复杂度及稳定性表
- 各种算法的复杂度
- 数据结构:算法的复杂度
- 各种数据结构insert和search操作的平均时间复杂度比较
- [数据结构与算法]各种排序算法的稳定性和时间复杂度小结
- 各种算法的时间复杂度
- 各种排序算法的复杂度
- 各种排序的时间复杂度
- 各种排序算法的复杂度
- 各种排序算法的复杂度
- 各种排序算法的复杂度
- 各种排序算法的复杂度
- 各种排序算法的复杂度
- 各种排序算法的复杂度
- 各种算法的时间复杂度
- cocos2d clipboard
- 同步异步浅析
- 集合框架
- 数据库的基本操作
- 运行时有多个版本的库文件怎么办?
- 各种数据结构的复杂度
- java jdk和eclipse的配置
- IOS 关于layoutSubviews摘记
- 懒加载及self.和下划线区别
- 加速计And摇一摇
- [转载]中文与乱码问题 及一些问题
- jQuery源码分析之offset,position,offsetParent方法以及源码中常见的cssHooks,swap代码
- 模拟器系统键盘 不能弹出
- C++中的iter_swap函数的应用