c++从map与unordered_map的区别到红黑树与二叉平衡树的区别

本文探讨了map和unordered_map的区别,map基于红黑树的有序特性,适用于有序需求,而unordered_map凭借哈希表的高效查找,适用于一般场景。同时解析了红黑树与平衡二叉树在插入和删除操作上的效率差异。
摘要由CSDN通过智能技术生成

1 map与unordered_map

1.1 介绍

map由红黑树实现,红黑树本质上是一个带有平衡功能(不同于平衡二叉树)的二叉搜索树(完全二叉树形式存储);完全二叉树由于父节点与子节点的序列存在关系,所以其底层实现也是数组;

unordered_map有哈希表实现,哈希表的本质是一个存储数据地址的数组(映射存储策略多种),所以查找效率为o(1)。

1.2 区别

map带有排序功能,在有有序要求的情况下使用map,其余情况unordered_map的效率都更高。

2 红黑树与二叉平衡树

2.1 介绍

 红黑树(Red Black Tree)是一种自平衡(没有一条路径会比其它路径长出两倍)的二叉查找树,它与平衡二叉树相同的地方在于都是为了维护查找树的平衡而构建的数据结构,它的主要特征是在二叉查找树的每个节点上添加了一个属性表示颜色,颜色有两种,红与黑(颜色分布遵循一定规律)。

平衡二叉树是左右子树都为平衡二叉树,且左右子树高度相差小于1.

2.2 区别

(1)插入节点导致失衡时,二者的调整次数都为最多两次

(2)删除节点导致失衡时,平衡二叉树复衡旋转次数未定,复杂度为log(n);红黑树的旋转次数保证了不超过三次,即旋转节点又调整节点颜色(红黑色分布遵循规律)。

(3)平衡二叉树通过保持严格的平衡,保证了较高的查找效率;而红黑树兼顾增删效率的同时牺牲了一定的查找效率。

(4)由于红黑树不是严格的二叉平衡树,相同数据时,高度总是大于等于平衡二叉树,所以占用内存也会略大一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和道一文字_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值