一分钟学会MySQL的索引结构及二叉树

哈希表(Hash)
哈希表查询数据的时间复杂度为O(1),是一种高效的数据结构。面试中常问的HashMap就是基于哈希表的思想,对HashMap不太深入的同学,可以参考我的另外一篇文章HashMap夺命连环问

例如将索引列作为key,对应行的物理地址作为value,非常适用于处理等值查询。

select * from user where id=1;
但哈希表显而易见的缺点就是,哈希表不适用于范围查找。

例如执行以下语句时,哈希表就无能为力了。

select * from user where id>1;
 

二叉搜索树(Binary Search Tree)
经常刷LeetCode的同学,肯定是知道二叉搜索树的中序遍历是一个递增序列。

一颗二叉搜索树,每个节点最多只有2个子节点,左子节点的值小于父节点,右子节点的值大于父节点。

java培训中二叉搜索树中进行查询,可以利用到二分查找,因此查询的时间复杂度为O(logN)。

例如查找元素23时,先从根节点开始,因为23>20,路由到右子节点32上。因为23<32,路由到其左子节点23上,发现相等,查询结束。

仅需比较3次,就可以查询到想要的数据。

另外,二叉搜索树的插入与删除操作的时间复杂度也为O(logN),有兴趣的同学可以做做LeetCode上的这道题701. 二叉搜索树中的插入操作

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值