set四个集合操作&&红黑树初识

本文介绍了红黑树的基本概念,包括其性质、黑高和与二叉查找树的区别。红黑树用于支持search、insert、delete等操作,确保最坏情况下的时间复杂度为O(logn)。此外,文章还提到了C++关联容器如map和set如何利用红黑树实现,以及set的四个集合操作:union、intersection、difference和symmetric_difference,并指出这些操作的注意事项和应用场景。
摘要由CSDN通过智能技术生成

了解红黑树:
首先说说二叉查找树。二叉查找树的重要性质:任何节点的键值一定大于其左子树中每一个节点的键值,并小于其右子树中每一个节点的键值。在极端情况下,当所有节点位于一条链上时,二叉查找树的操作时间为O(N)。沿树的左边向下走,能够找到最小值。沿着树的右边走能够找到最大值。
和二叉搜索树一样,红黑树(一种特殊的二叉查找树)可以支持search,minimum,maximun,insert,delete等操作,同时保证了在最坏情况下集合操作的时间复杂度是O(lgn).
从某个结点出发(不含这个结点)到达一个叶节点的任意一条简单路径上的黑色结点的个数称为该节点的黑高。写为bh(x)
每个结点有5个属性:color,key,left,right,p。红黑树有以下性质:
1.每个节点红或黑色的。
2.根结点是黑色的。
3.每个叶子结点是黑色的。
4.一个结点是红色的那么两个子结点是黑色的。
5.从任意结点到其后代叶子结点的简单路径上,均包含相同数目的黑色结点
一颗有n个内部结点的红黑树高度至多是2lg(n+1)  //以任意结点x为根的子树至少包含2^[(bhx)-1]-1个内部结点.
插入删除结点后可能违背或破坏红黑树原有的性质,为了维持原有的特性需要重新着色,左旋,右旋。红黑树的具体代码操作较为复杂,是数据结构里的高级产品,具体的旋转,插入和删除请参考《算法导论》。
带有哨兵的T.nil的红黑树:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值