平衡树存储:

size就是节点的个数。
value是节点代表的权值。
权值相同的两个节点被视为一个,num记录折叠数量。
rand是随机数,用来维护平衡树。
son就是两个儿子。
平衡树size更新:
实际操作中,各个变量的值都是不断更新的,size也不例外。
函数体:

一个节点包括的节点个数用脚也能想到:左儿子size与右儿子size的和,加上这个节点折叠数量。

完整的平衡树size更新代码:

平衡树插入:
学习完上面的内容,接下来的基本逼死人的操作插入与删除就很简单了:
由于Treap = Tree + Heap
所以平衡树插入与二叉排序树插入差不多
函数体:
C/C++学习:深入理解平衡树算法

本文是关于C/C++中的平衡树学习笔记,重点介绍了平衡树的size更新、插入操作以及旋转操作。通过理解Treap的特性,阐述了如何保持平衡树的平衡并进行有效的插入操作。同时提供了相关代码实现,帮助读者深入掌握这一关键数据结构。
最低0.47元/天 解锁文章
2660

被折叠的 条评论
为什么被折叠?



