【数据结构】图文详解Treap平衡树

本文介绍了一种名为Treap的平衡二叉查找树,通过随机分配的优先级进行节点旋转,保持树的平衡,提高查找效率。文章详细讲解了Treap的基本概念、平衡原理及其实现代码。

一、前言

Treap平衡树是一种树形数据结构,它是对二叉查找树的一种优化方式,但是学习的过程是真的非常的…痛苦。

二、二叉查找树的概念

首先,我们称具有以下3个性质的树为二叉查找树(BST)
1.左子树上所有结点的值均小于或等于它的根结点的值。
2.右子树上所有结点的值均大于或等于它的根结点的值。
3.左、右子树也分别为二叉排序树。
如图
在这里插入图片描述
在这张图中我们可以发现,在二叉查找树中,从根结点开始查找一个点的时间复杂度为logn级别,在我们想对树进行插入查找的时候都非常方便。

但是很遗憾,二叉查找树是有着它的缺陷的,例如:假如我们最开始有一个这样的树
在这里插入图片描述

然后我们如果不断插入比6小的数,那么二叉查找树就会变成…
在这里插入图片描述
一点都不好看!而且这样的话,我们查找的时间复杂度就又变成了n了,二叉查找树就失去了优势。

三、Treap平衡树的概念

对于上面那张图,我们觉得它一点也不方便,也不好看,我们希望那棵树是这个样子的
在这里插入图片描述
即使不能变成上图那种最完美的树,但是我们也还是想要去达到这个效果

然后,我们了解一下树的旋转

下面这张图就是把节点4右转后形成的新图,仍然符合二叉查找树的定义,左转同理
在这里插入图片描述
旋转又什么用呢?我们先再看看那张不漂亮的图
在这里插入图片描述
如果我们以节点5右转后会发生什么呢?
在这里插入图片描述
唉?好像好看多了,那这样的话岂不是我们多旋转几次不就越来越好看了吗?<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值