数据结构

完全二叉树,大根堆的根节点的值大于子节点的值,小根堆根节点的值小于子节点的值

堆插入操作(大根堆为例):插入新的节点,然后沿着新节点到根节点的路径执行一趟起泡操作,交换其与根节点的值;时间复杂度O(logn)

堆删除操作:只能删除堆顶元素,删除堆顶之后,再将最后一个叶子结点删除,执行一次从根节点到叶子结点的操作,寻找最后一个叶子节点应该存放的位置;时间复杂度O(logn)

建堆操作:对每个节点都执行一次堆插入操作;时间复杂度O(nlogn)

堆初始化操作:从最后一个非叶子节点开始调整,时间复杂度为非叶子节点的节点数量

二叉搜索树

查找操作:二分法,时间复杂度O(h)

插入操作:类似查找操作,找到需要插入的位置,时间复杂度O(h)

删除操作:基于查找,时间复杂度O(h)

  • 情况1:删除叶子节点,直接删除
  • 情况2:要删除的节点只有一个子树,如果要删除的节点是根节点,则将子树变为根节点,否则让该节点的父节点指向该节点
  • 情况3:要删除的节点有两个子树,则用左子树最大节点或右子树最小节点替换该节点,左子树最大节点是左子树的最右节点,右子树最小节点是右子树的最小节点

红黑树:平衡二叉搜索树

二叉搜索树问题:查找、插入和删除的时间复杂度与树高有关,最坏情况下为O(n),最好情况为O(logn)
红黑树:高度平衡的二叉搜索树,时刻维持树高为logn,可以保证查找性能为O(logn),在插入或删除操作时通过“旋转”维持树高

B树&B+树

用于外部存储,磁盘I/O读写较慢,如果使用二叉搜索树树太深,查找效率较低

B树&B+树:多路平衡查找树;每个节点可以有多个关键字,是一棵多叉树
B树:父节点的关键字不包括在子节点当中,提供层次查找的方式;与B+树相比,如果经常访问的节点离根节点更近,那么检索速度会更快,因为非叶子节点存储了叶子结点的指针
B+树:父节点的关键字包括在子节点中,非叶子节点不存储叶子结点的指针,因此可以存储更多的关键字,提高效率;提供层次查找和顺序查找两种查找方式;叶子结点按顺序存储,查找指定区间的数据效率更高,数据紧密性好,缓存命中率更高,有助于数据库的整表检索

红黑树和AVL树用于内部存储,B-树和B+树用于外部存储

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值