高级数据结构

高级数据结构

一、自顶向下伸展树

沿着树向下搜索某一个结点X时候,将搜索路径上的结点及其子树进行移走。创建两个空树左树和右树,没有被移走的结点叫做中树,在伸展操作的过程中:

  1. 当前遍历结点X 是树的中树
  2. 左树L保留小于X的结点
  3. 右树R 保留大于X的结点

二、红黑树

红黑树是一棵二叉搜索树,它在每个节点增加了一个存储位记录节点的颜色,可以是RED,也可以是BLACK;通过任意一条从根到叶子简单路径上颜色的约束,红黑树保证最长路径不超过最短路径的二倍,因而近似平衡。

具体性质如下:

  1. 每个节点颜色不是黑色,就是红色

  2. 根节点是黑色的

  3. 如果一个节点是红色,那么它的两个子节点就是黑色的(没有连续的红节点)

  4. 对于每个节点,从该节点到其后代叶节点的简单路径上,均包含相同数目的黑色节点

三、确定性跳跃表

定义:如果至少存在一个指针从一个元素指向另一个元素,称两个元素是链接的。

定义:两个在高度为h链接的元素间的间隙容量等于它们之间高度为 h-1 的元素的个数。

1-2-3确定性跳跃表定义:满足如下性质的跳跃表:每两个高度相同的结点之间的间隙容量不能超过3个。

四、AA树

  1. AA-Tree是RB-Tree的一种变型,是红黑树
  2. “红”结点只能作为结点的右孩子,“黑”结点均可;
  3. 结点中的level相当于RBT中的结点的黑高度;
  4. “红”结点的level与其父结点的level相同;
  5. “黑”结点的level比其父结点的level小1;
  6. 左孩子的level比父结点小1,右孩子的level比父结点小0或1;

禁止出现的2中情况:

1、出现连续向右的水平方向链,即在RB-Tree中不能出现连续2个红结点;

2、出现向左的水平方向链,这是AA-Tree中规定的;

五、treap树

Treap=Tree+Heap。Treap 本身是一棵二叉搜索树,它的左子树和右子树也分别是一个Treap,和一般的二叉搜索树不同的是,Treap 纪录一个额外的数据,就是优先级。

Treap每个节点的数据域包含2个值,key和weight。

key值,和原来的二叉搜索树一样,满足左子树<根节点<右子树。

weight值,随机产生。在Treap中weight值满足堆的性质,根节点的weight值小于等于(或大于等于)左右儿子节点。

六、配对堆

配对堆采用左儿子和右兄弟的表示方法。存在额外的链,如果节点是最左儿子,则链指向父节点,如果不是,则指向左兄弟。把这个数据成员叫做prev。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

木18

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

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

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

打赏作者

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

抵扣说明:

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

余额充值