本节课主要讲了如何构造自己想要的数据结构,或者扩充已有数据结构的功能,以实现想要的特定功能
比如设计一个动态结构,满足功能寻找第k大的数
其做法是维护每个结点的子结点个数来推导其秩,而不维护其秩,因为动态操作会使得其难以维护
红黑树的插入操作 1.树插入 2.rebalance
构造自己需要的扩充数据结构的基本流程
1.选择一个基本的数据结构 例如红黑树
2.决定要添加到结点的基本信息 例如实现查询第k大数功能,应添加的基本信息为所有子树结点之和,而非直接保存该结点键值的秩
3 维持 插入+旋转/删除+旋转
4 封装为函数,实现其功能
后面又介绍了一种区间树,其实相关的数据结构还有很多,包括线段树及其各种变体、名次树、主席树等等,其主要思想都是维护一些额外的信息,去实现想要的功能,之后我会实时更新一些例子
时间: 2024-08-14 16:42:35