算法导论 14章 数据结构的扩张

算法导论 14章 数据结构的扩张(二) 区间树 区间树——红黑树的扩张           将红黑树进行扩张以支持由区间构成的动态集合,其节点主要除红黑树节点常规信息之外,还有一个区间信息,这样的一颗树称之为区间树。我们将利用14.2节总结的红黑树扩张的四个步骤来讨论如何进行扩充以得到区间树。 步骤1:基础数据结构         毫无疑问,我们将选择红黑树。该区间树的每个节点有一个区间信息,对于节点x,即为int[x],用low表示in 阅读详情

本章介绍了两种红黑树的扩张

一,动态顺序统计

秩:在集合线性序中的位置,中序遍历树时输出的位置。

顺序统计树:向红黑树的结构中添加一个size域,表示包含自身节点的当前节点的子树节点的数目。

(1)查找给定秩的元素

OS_SELECT(x,i)
     r = size[left[x]]+1; //先计算x的处于的位置
     if i = r         //x正好是第i小的关键字
         then return x;
     else if i < r   //x比第i关键字大,则在其左子树查找
         then return OS_SELECT(left[x],i)
     else return OS_SELECT(right[x],i-r)  //x比第i关键字小,则在其右子树查找

(2)确定一个元素的秩

OS_RANK(T,x)
    r = size[left[x]]+1;   //获取以x为根子树中x的位置(中序遍历)
    y = x;
    while y != root[T]    //从下向上直到根节点
          do if y = right[p[y]]   //如果是右子树
                  then  r = r + size[left[p[y]]]+1; 
          y = p[y]; //向上移动
    return r;

(3)对树的维护

二,如何扩张数据结构

对一种数据结构的扩张过程分为四个步骤:

1)选择基础数据结构

2)确定要在基础数据结构中添加哪些信息

3)验证可用基础数据结构上的基本修改操作来维护这些新添加的信息

4)设计新的操作

(1)对红黑树的扩张

定理14.1

三,区间树

区间树:一种对动态集合进行维护的红黑树,其中每个元素x都包含一个区间x.int。

支持操作:

INTERVAL_INSERT(T,x):将包含区间域int的元素x插入到区间树T中

INTERVAL_DELETE(T,X):从区间树T中删除元素x

INTERVAL_SEARCH(T,i):返回一个指向区间树T中元素x的指针,使int[x]与i重叠,若集合中无此元素存在,则返回nil[T]。
算法导论第十四章习题解答 能用代码表示的都用代码表示,不能表示的写出思路,思路都没写的就是我也做不出来 立即下载

相关推荐

Type-C快充移动电源芯片避坑指南:IP5356配置全流程(支持PD3.0)

本文详细解析了英集芯IP5356芯片在Type-C快充移动电源中的应用,提供了从芯片选型、原理图设计、PCB布局到PD协议调试的全流程实战指南。文章重点剖析了如何避免散热、EMI及协议握手等常见设计陷阱,并分享了量产前的关键测试验证方法,旨在帮助硬件开发者高效打造稳定可靠的快充产品。

weixin_29235525的博客 850

回溯算法总结

目录 回溯算法简介 回溯算法中的三个概念 回溯算法的步骤 具体流程 代码实现框架 经典例子 选取数字集合 皇后问题 最大 k 乘积问题 回溯算法简介 回溯法是一种类似枚举的搜索尝试过程,既然是枚举,那么就会遍历解空间树中的所有解(或者是“路径”),搜索的过程按照DFS原则,而尝试就意味着,在遍历的过程中,有可能到达某一个结点后,发现不能够满足约束条件,在这次尝试中,这条“路”...

今天吃了吗的博客 2156

嵌入式开发实战:如何用cJSON库在STM32上实现轻量级JSON通信(附完整代码)

本文详细介绍了如何在STM32嵌入式系统中使用cJSON库实现高效的JSON通信方案。针对嵌入式环境的内存限制,提供了内存优化策略、cJSON库的深度定制方法以及完整的通信流程实现代码,帮助开发者解决JSON解析效率低下和跨平台兼容性等核心挑战。

star5的专栏 471

用A*算法解决十五数码问题(人工智能作业)

人工智能大作业:使用A*算法解决十五数码问题

weixin_40433003的博客 7085

EEGLAB安装、EDF数据导入、EEG预处理(Matlab)

目录下载和安装下载安装遇到问题及解决方案导入EDF数据EEG预处理 下载和安装 下载 链接:https://pan.baidu.com/s/17eMT6B7LgZ4PyqWvD5ixmg 提取码:12gz 安装 **第一步:**将下载下来的文件解压,修改名称为eeglab,将此文件夹存放在matlab的安装目录里的toolbox文件夹下,下图是我的路径,需要拷贝到自己相对应的路径中 第二步: 打开Matlab软件,点击主页中的设置路径 设置路径 点击添加并包含子文件夹,将eeglab文件夹添加进来,保

y18771025420的博客 1万+

联想Y9000P安装Ubuntu20.04记录

联想Y9000P 2022安装Ubuntu20.04问题记录

Legendyyy的博客 7116

人工智能导论——A*算法实验

一、实验目的: 熟悉和掌握启发式搜索的定义、估价函数和算法过程,并利用A*算法求解N数码难题,理解求解流程和搜索顺序。 二、实验原理: A*算法是一种启发式图搜索算法,其特点在于对估价函数的定义上。对于一般的启发式图搜索,总是选择估价函数f值最小的节点作为扩展节点。因此,f是根据需要找到一条最小代价路径的观点来估算节点的,所以,可考虑每个节点n的估价函数值为两个分量:从起始节点到节点n的实际代价以及从节点n到达目标节点的估价代价。 A*算法中,若对所有的x存在h(x)≤h*(x),则称h(x)为..

cangzhexingxing的博客 1万+

仿真系列专栏介绍

大家好!欢迎来到我的仿真学习系列专栏!这是一个我在学习仿真技术过程中整理和分享的系列文章。作为一名正在不断学习和实践的工程师,我希望通过这个专栏,和大家一起探索仿真技术,尤其是在高速信号完整性方面的应用。

案例文章,高速信号 368

A*算法入门

本文转载于http://www.cppblog.com/mythit/archive/2009/04/19/80492.aspx 在看下面这篇文章之前,先介绍几个理论知识,有助于理解A*算法。 启发式搜索:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无畏的搜索路径,提到了效率。在启发式搜索中,对位置的估价

sunny crazy 689

WorkBuddy最新更新特性(2026-07-21)

WorkBuddy最新更新特性

AI人人懂 576

零基础入门转录组数据可视化——绘制差异小提琴图(常规)

转录组数据可视化之一,先介绍相关基础知识,其次用实际案例为基础,由浅入深介绍差异小提琴图绘制的全过程,包括内容有相关代码和截屏。

呆猪儿的博客 635

算法分析--回溯法

一、回溯法基本概念 1.基本做法:搜索 2.指导思想:走不通就回头 3.求解问题:回溯到根,且根结点的所有子树都被搜索遍才结束 4.求解步骤: (1)确定问题的解空间 (2)确定结点的扩展规则 (3)搜索解空间 搜索代价: (1)剪枝:通过状态估值,判断是否继续扩展 (2)估值与检查机制:好的机制能显著的减少所生成的结点数 回溯算法的效率: (1)产生X[K]的时间 (2)过程中检查X[K]的个数 (3)计算估值函数的时间代价 二、PPT例题 1.找出n个数中r个数的组合 使用dfs+回溯 参考 #incl

weixin_44715448的博客 686

零件边界线提取处理原理详解

该程序提出了一种高效的点云边界提取方法,通过三阶段处理流程实现零件几何特征的精确提取。首先采用RANSAC算法进行坐标系标准化,包括主平面检测、点云分割和双重旋转对齐。接着使用凹包算法和RANSAC直线拟合提取底面边界。最后通过多方向密度切片分析(Z向100片、X向50片),自动选择高密度切片进行边界提取和直线拟合。算法具有鲁棒性强、处理效率高(支持OpenMP并行计算)和参数可配置等特点,能有效提取零件的几何边界特征,为后续质量检测提供基础。实验结果显示该方法能准确提取零件的多方向边界线。

weixin_45196569的博客 433

《算法导论》第 14 章 - 数据结构的扩张

本文介绍了数据结构扩张的基本概念和方法,重点讲解了动态顺序统计树和区间树的实现与应用。动态顺序统计树通过为二叉搜索树节点增加size属性,支持快速查询第i小元素和元素排名;区间树则在BST基础上添加max属性,高效处理区间重叠查询。文章详细阐述了这两种扩张数据结构的C++实现,包括核心操作(插入、删除、查询)的算法流程和代码示例,并探讨了数据结构扩张的一般原则。这些技术为解决复杂问题提供了有效工具,如排名统计、区间调度等应用场景。

2302_80961196的博客 1370

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

《算法导论》第14章 数据结构的扩张 (1)动态顺序统计

《数据结构扩张》是《算法导论》第三部分的最后一章。在介绍学习了这么多种数据 结构之后,简要介绍了当这些基本数据结构不满足需求时,如何扩张它们来满足需求。 这才是学习算法的目的,能够根据需求选择合适的数据结构和算法,并在无法满足需求 时能够扩张它。这才是对算法的思想和本质的学习! 可以将本章看做深入学习的前奏吧,因为紧接着就要开始进入第四部分《高级设计和分析 技术》了。那么赶快来看

西代零零发 3340

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

算法导论-第14章-数据结构的扩张

OS树,又称顺序统计树(Order-Statistic tree),是一棵红黑树在每个结点上扩充一个sizesizesize属性而得到的,如下图所示。在红黑树的结点xxx中,除了xkeyxcolorxleftxrightxpxkeyxcolorxleftxrightxp之外,还包括xsizex.sizexsize属性,这个属性包含了以xxx为根的子树(包括xxx。

优快云博客 301

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

《算法导论》第14章 数据结构的扩张 (2)

在上一节中,我们为树结点添加size域表示每颗子树的大小,即包含的结点个数,扩张了 二叉查找树为其增加顺序统计量的查找功能。更为自然的想法是直接添加顺序统计量rank域 到每个树结点上。这一节我们就来看下在这样的设计下,如何扩张来完成上一节相同的功能。 当我们插入一个结点到二叉树中,假设它的顺序统计量为5,那么之前二叉树中顺序统计量 大于5的结点都要更新。也就是说插入一个新结点到对

西代零零发 2859

《算法导论》第14章 数据结构的扩张 个人笔记

第14章 数据结构的扩张 14.1 动态顺序统计 14.2 如何扩张数据结构 14.3 区间树

Amber07的笔记本 631

《算法导论》笔记 第14章 14.2 如何扩张数据结构

【笔记】 四个步骤: 1) 选择基础数据  2) 3) 4) 【练习】

Azarath Metrion Zinthos 2027

算法导论 第14章 数据结构的扩张(四) 14-1 最大重叠点

题目         同习题14.3-6我们依然运用数据结构扩张的四个步骤来解决这个问题。 步骤1:选取基础数据结构     我们选择红黑树作为基础数据结构来扩张,红黑树是这章的主题,扩张之后所得的树称之为最大重叠点(POM)树。由于要求得区间的最大重叠点,因而当然的,我们的节点必然包含一个域存储以该节点为根的子树的最大POM,即为pom域。 步骤2:附加信息

V然成风 1283

算法导论代码 第14章 数据结构的扩张

第14章 数据结构的扩张 14.1 动态顺序统计 #include #include #include typedef struct red_black_tree_type *tree; enum color_enum { color_red, color_black }; struct tree_node { void *key; enum color_enum color;

MoXiaopeng的专栏 760

《算法导论》读书笔记之第14章 数据结构的扩张

  前言:通常我们会遇到一些问题,采用一些标准的数据结构,如双链表、散列表或二叉查找数时,不能够满足操作要求,需要对这些数据结构进行扩张,添加一些额外的信息使得能够完成新的操作。附加的信息需要对数据结构的某些操作进行调整,这个是非常关键的步骤,决定着数据结构扩张是否能够实现。本章主要讨论了红黑树结构的扩张,介绍了两种扩张方式。第一种方式扩张使得红黑色能够支持动态集合上顺序统计,快速找出集合中第i小...

weixin_33854644的博客 164
上一篇: 算法导论 15章 动态规划
下一篇: 算法导论 11章 散列表
cqcpp
博客等级 码龄12年 3粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值