数据结构与算法——二叉查找树类的C++实现

卫衣 / 双肩包 / T 恤/羽绒服等任选,下单送 CSDN 程序员周边任选一款实物,直接赠送 CSDN 会员卡+ Coding Plan,写代码学习装备一起拿下 立即抢购
二叉树的平均深度为O(logN);
二叉查找树在二叉树的基础上,增加的性质为:对于树中每一个结点X,它的左子树中所有项的值小于X中的项,而它的右子树中所有项的值大于X中的项。

该二叉查找树结点的数据结构:


struct BinaryNode{
    Comparable element;//结点的值
    BinaryNode * left;//结点的左孩子
    BinaryNode * right;//结点的右孩子
    int num;//相同值的结点出现的次数,如果不考虑重复元素的话,该成员可以省去
    BinaryNode(const Comparable & e, BinaryNode* lt, BinaryNode* rt, int n):element(e), left(lt), right(rt), num(n){}
};

该结点数据结构其实是一个结点类。

该二叉查找树的主要成员函数:

BinarySearchTree(){root = NULL;}//构造函数
BinarySearchTree(vector<int> & v);//构造函数
BinarySearchTree(const BinarySearchTree & rhs);//复制构造函数
const BinarySearchTree & operator=(const BinarySearchTree & rhs);//赋值运算符重载
~BinarySearchTree();//析构函数

void preOrderPrintTree() const;//从小到大打印该二叉查找树
void inOrderPrintTree() const;//从大到小打印该二叉查找树

Comparable findMin() const;//查找最小值
Comparable findMax() const;//查找最大值
bool contains(const Comparable & x) const;//判断该二叉查找树是否包含值为x的结点
bool isEmpty() const;//判断该二叉查找树是否为空 
void makeEmpty();//清空该二叉查找树

void insert(const Comparable & x);//插入结点
void remove(const Comparable & x);//移除结点值为x的结点

主要成员函数介绍:

void remove(const Comparable & x);//移除结点值为x的结点

/****************************************************************
*   函数名称:remove(const Comparable & x) 
*   功能描述: 移除结点
*   参数列表: x -- 要移除的结点的值 
*   返回结果:void
*****************************************************************/
template<typename Comparable>
void BinarySearchTree<Comparable>::remove(const Comparable & x)
{
    remove(x, root);    
}

template<typename Comparable>
void BinarySearchTree<Comparable>::remove(const Comparable & x, BinaryNode * &t) const
{
    if(t == NULL)
        return;

    if(x < t->element)
        remove(x, t->left);
    else if(x > t->element)
        remove(x, t->right);
    else if((t->left != NULL) && (t->right != NULL)){//该结点有两个儿子的时候,将该结点右子树的最小结点覆盖该结点的值,然后再删除那个最小结点
        t->element = findMin(t->right);
        remove(t->element, t->right);
    }
    else {//该结点只有一个儿子的时候,将儿子放在当前结点的位置。用另一个指针保存当前结点,然后删除该结点;此时也包括该结点为叶子结点的情况
        BinaryNode * oldCurrentNode = t;
        t = (t->left == NULL) ? t->right : t->left;
        delete oldCurrentNode;
    }
}






下面的main函数是对remove成员函数的测试,用的就是上面两个图:

int main()
{
    BinarySearchTree<int> tree;
    tree.insert(6);
    tree.insert(2);
    tree.insert(1);
    tree.insert(4);
    tree.insert(3);
    tree.insert(8);

    tree.preOrderPrintTree();
    tree.remove(4);
    tree.preOrderPrintTree();

    BinarySearchTree<int> tree2;
    tree2.insert(6);
    tree2.insert(2);
    tree2.insert(1);
    tree2.insert(5);
    tree2.insert(3);
    tree2.insert(4);
    tree2.insert(8);
    tree2.preOrderPrintTree();
    tree2.remove(2);
    tree2.preOrderPrintTree();


    return 0;
}


下面是该二叉查找树类的源代码:


/*******
【太阳能多级逆变器】具有较低的总谐波失真(THD),并采用了SPWM(正弦脉宽调制)技术研究(Simulink仿真实现) 内容概要:本文研究了一种应用于太阳能发电系统的多级逆变器,旨在通过采用正弦脉宽调制(SPWM)技术有效降低输出电压的总谐波失真(THD),从而提升电能质量。研究基于Simulink平台构建了完整的仿真模型,系统地实现了SPWM信号生成、驱动逻辑控制以及多电平输出波形合成等关键环节,验证了该多级逆变器在不同运行工况下具备优异的动态响应能力和稳定性。仿真果表明,所设计的逆变器能够输出接近理想正弦波的电压波形,显著抑制高次谐波,满足可再生能源并网对电能质量的严苛要求,体现出多级逆变拓扑在光伏发电系统中的技术先进性工程应用价值。; 适合人群:电气工程、自动化、新能源科学工程及相关专业的本科生、研究生,以及从事光伏逆变器设计、电力电子变换技术和可再生能源并网系统研发的工程技术人员。; 使用场景及目标:①深入理解多级逆变器的工作原理及其在太阳能发电系统中的关键作用;②掌握SPWM调制技术的理论基础实现方法,并分析其对改善THD的核心机制;③借助Simulink仿真平台开展电力电子电路的建模、参数调试性能评估,服务于课程设计、毕业设计、科研课题或实际工程项目开发。; 阅读建议:建议读者合提供的Simulink仿真模型进行同步操作验证,细致调整调制比、载波频率等关键参数,观察其对输出波形和THD指标的影响,以深化对系统动态特性的理解,并尝试优化控制策略以进一步提升系统性能。 立即下载

相关推荐

ECC不只是纠错码内存芯片测试SAP中的三种技术

错误处理容错机制是保障系统稳定性的核心。从计算机内存的奇偶校验到汉明码,ECC(Error Correcting Code)通过冗余位实现单比特纠错双比特检错,成为服务器数据完整性的基石。在芯片制造领域,MBIST内建自测试ECC技术,能够区分硬错误软错误,提升测试覆盖率良率。而在企业资源计划系统中,SAP ECC(ERP Central Component)的流程则关乎财务数据转的准确性。本文梳理三套ECC体系的实际运维经验,涵盖CE/UE计数、MBIST覆盖率以及CO88报错等典型

weixin_34098209的博客 247

ECC三种身份解析:内存纠错、SAP芯片测试

在IT半导体领域,ECC是一个极易混淆的缩写,它可能指内存纠错编码、SAP ERP套件,或芯片测试中的MBIST自检逻辑。理解ECC的多重含义,是运维、财务测试人员高效协作的基础。内存ECC通过冗余校验位实现单比特纠错双比特检错,是保障服务器数据可靠性的关键机制,一旦出现不可纠正报错需立即排查。SAP ECC则是企业资源计划核心组件,涉及F.16、AJRW等事务代码的严谨顺序。芯片领域,MBIST ECC验证内建自检逻辑中的纠错电路,其故障定位直接影响量产良率。掌握不同场景下的ECC概念排查思路

weixin_42531494的博客 293

深入解析ECC三种身份SAP芯片MBIST测试服务器内存纠错

在IT工业领域,缩写“ECC”常常代表截然不同的技术内涵。从最基础的纠错码原理出发,ECC通过冗余校验保障数据完整性,其价值贯穿多个关键场景。在企业资源计划系统中,ECC作为SAP核心组件,支撑财务、资产折旧余额转等复杂流程,确保账务数据准确闭环;在芯片测试领域,ECC合MBIST(存储器内建自测试)算法,用于检测和纠正SRAM等存储单元故障,是芯片可靠性验证的关键环节;而在服务器运维中,ECC内存技术用于检测并纠正单比特错误,当出现uncorrectable ECC报错时,往往意味着硬件隐患,

cigang4063的博客 393

同一缩写三种身份ECC纠错码、MBIST测试SAP全解析

在IT运维、芯片验证和企业管理系统中,ECC是一个反复出现却又含义迥异的缩写。最广为人知的ECC指Error Correction Code,即纠错码,通过冗余校验位实现对内存、SSD等存储介质中单比特错误的检测纠正,是保障服务器稳定运行的基础机制。而在芯片测试领域,MBIST内建自测试借助ECC验证存储阵列的物理健康,通过故障注入判断不可纠正错误的响应是否合规,直接关系到良率可靠性。此同时,企业资源管理中的SAP ECC(ERP Central Component)则代表着一套成熟的业务系统,其

weixin_29164185的博客 216

ECC三种含义详解内存纠错、MBIST测试SAP

ECC是信息技术领域最常见的缩写之一,在不同技术栈中代表完全不同的概念。从纠错码(Error Correction Code)出发,它最初用于检测和纠正数据比特翻转,典型应用就是服务器内存中的ECC技术,通过额外的校验位实现单比特纠错和双比特检错,保障数据库和文件系统的稳定性。在半导体测试领域,ECCMBIST(存储器内建自测试)紧密关联,用于验证芯片内部存储阵列及纠错逻辑是否可靠,并通过故障注入和覆盖率指标保证量产良率。而在企业软件领域,SAP ECC作为ERP Central Component,是大

weixin_29522547的博客 135

ECC三种身份:从内存纠错到SAP芯片测试

在计算机系统中,ECC(Error Correcting Code)常被视为内存纠错码的代名词,其基于汉明码的冗余校验思想,能够在数据错误发生时自动纠正。然而ECC在不同领域有截然不同的含义:在芯片测试中,MBIST ECC合内建自测试冗余修复,保障存储阵列良率;在企业ERP领域,SAP ECC则是一套完整的业务套件。当服务器报出uncorr. ECC错误时,我们需要区分内存、RAID控制器或NVMe设备等不同来源,通过计数器增长趋势、错误聚集性来精准定位硬件故障,从而避免盲目更换部件。理解这些场景背后

weixin_29657209的博客 34

三种ECC内存纠错、SAPMBIST芯片测试的实战解析

在计算机体系构中,ECC(Error Correction Code)是一种通过冗余校验位检测并纠正数据位错误的关键机制,其底层常依托汉明码实现单比特纠错双比特检测。这种“冗余换可靠”的思想同样体现在企业软件芯片测试领域:SAP ECC依靠流程校验保证账务期初平衡;MBISTECC合可在存储器量产测试中定位并修复坏点,提升良率。理解ECC的原理边界,有助于工程师面对服务器“uncorrectable ECC”报错、差异或测试修复率异常时快速定位问题。本文从内存纠错讲到SAP配置,再到

weixin_42652674的博客 256

ECC三种身份内存纠错、SAP芯片测试全解析

在信息技术领域,ECC(Error Correcting Code)是确保数据完整性的核心机制,其原理基于汉明码和SEC-DED算法,能够在数据读写时自动检测并纠正单比特错误,有效避免因内存bit翻转导致的静默数据损坏。这项技术广泛应用于服务器内存、数据库系统以及芯片设计验证中:在服务器层面,内存ECC故障常通过EDAC或BMC日志表现为“uncorr. ECC 显示2”等告警;在同名的SAP ECC系统中,企业财务人员则要面对流程中的复杂事务代码数据一致性挑战;而在半导体领域,MBIST ECC则作

weixin_26642481的博客 255

一次讲透三种ECCSAP芯片测试服务器内存报错

ECC这个缩写在不同技术领域含义迥异:在硬件层面,它指基于汉明码的内存纠错码,通过冗余校验位实现单比特错误的自动纠正,是保障服务器稳定运行的关键技术;在企业管理软件领域,SAP ECC(ERP Central Component)是核心ERP系统,算涉及FI、CO、MM、SD等多个模块的复杂操作;在芯片测试领域,MBIST ECC则用于检测内建存储器的制造缺陷纠错逻辑。当你看到服务器报出uncorr. ECC错误时,需要从BMC日志、EDAC计数等维度定位故障内存条。理解这三种ECC的差异,能帮你快

weixin_34101784的博客 292

同一个ECC三种身份:从内存纠错到芯片测试SAP一次讲透

纠错码ECC)是计算机硬件中保障数据完整性的基础机制,通过汉明码等算法检测并纠正单比特翻转,广泛应用于服务器内存、NVMe盘等关键部件,显著提升系统长时间运行的稳定性。在更底层的芯片制造环节,MBIST(存储器内建自测试)会专门验证片上存储器的ECC纠错逻辑是否可靠,通过故障注入确认其在极端工况下仍能兜住错误。而企业信息化领域,SAP ECC则是ERP核心组件的缩写,账涉及资产、总账、外币评估等一系列流程操作。三者虽共享“ECC”之名,内涵却毫无交集。本文从纠错原理出发,厘清服务器告警、芯片量产测试

weixin_29315091的博客 259

ECC三面观:从内存纠错到SAPMBIST芯片测试实战

在信息技术领域,ECC这一缩写承载着截然不同的专业内涵:它既是硬件层面保障数据完整性的纠错码(Error Correction Code),也是企业资源计划系统中核心组件SAP ECC,更在芯片测试领域MBIST深度绑定,用于验证带纠错逻辑的存储器。从最基础的奇偶校验到汉明码,再到SEC-DED单比特纠错机制,技术原理始终围绕“用冗余信息换定位修正能力”展开。理解这些底层逻辑,不仅有助于解读服务器内存报错,还能厘清企业流程芯片量产测试的关联。当遇到uncorr. ECC 显示2这类告警时,可靠的排

weixin_28744613的博客 181

一个缩写,三种场景:解析内存ECC、MBIST ECCSAP

在计算机工程和企业信息系统领域,ECC这个缩写同时指向多个完全不同的技术概念。最基本的理解是Error Correction Code——纠错码,它通过冗余校验位实现数据错误的检测纠正,例如经典汉明码和SEC-DED机制,为服务器内存提供了可靠性的最后防线。当运维在日志中看到'uncorr. ECC 显示2',意味着内存已出现不可纠正错误,需要紧急排查;而在芯片测试场景,MBIST ECC则是内建自测试纠错电路的合,确保片上SRAM的功能安全,尤其符合车规级芯片的可靠性要求;此同时,SAP ECC

weixin_31309419的博客 304

ECC三种面孔:内存纠错、SAP芯片测试

纠错码ECC)是保障数据可靠性的核心技术,其核心原理是通过冗余校验位实现对单比特错误的自动纠正多比特错误的检测。基于汉明码的SEC-DED机制,内存ECC能够在错误发生时不打扰CPU地修正数据,这对服务器、数据库等关键业务至关重要;而同样的思想也延伸至企业ERP领域,SAP ECC流程通过严格的检查转保障财务数据平滑过渡;在芯片设计领域,MBIST ECC验证则确保片上存储器的纠错逻辑在流片前达到覆盖率要求。当服务器出现uncorrectable ECC error时,如何正确解读错误计数并定

weixin_34189116的博客 373

ECC是什么?一文分清内存纠错码、MBIST ECCSAP ECC

ECC(Error Correction Code)是硬件数据纠错的核心技术,通过冗余校验位实现单比特错误自动纠正和双比特错误检测,广泛用于服务器内存、SSD、芯片缓存等场景。然而在技术圈,同一缩写却可能指向完全不同的领域:芯片设计中的MBIST ECC测试存储阵列的纠错逻辑;企业软件里的SAP ECC则是ERP系统的度财务算流程。当服务器日志出现uncorr. ECC显示2时,意味着内存发生了不可纠正错误,需合DIMM编号、错误计数或状态位综合判断;而芯片验证中的MBIST ECC fail则需检查

weixin_42524171的博客 135

ECC的真面目:从内存纠错到芯片测试SAP

数据完整性是信息系统设计中的核心要素,在硬件和软件层面都需要引入校验容错机制。纠错码ECC)作为经典技术,通过添加冗余校验位实现错误检测纠正,例如内存中的SEC-DED机制可纠正单比特错、检测双比特错。在服务器运维中,日志里的uncorrectable ECC错误需要合固件硬件逐层排查;在芯片制造中,MBIST内建自测试通过故障注入验证ECC逻辑的可靠性;而在企业资源计划领域,SAP ECC则通过试运行和冲销机制确保财务数据可追溯。三个看似无关的ECC场景,实际上共享同一套“加冗余、留余地、先

weixin_34111790的博客 375

三种ECC全面解读:内存纠错、MBIST测试SAP

ECC这一缩写在不同技术语境下含义迥异,既可能指服务器内存中的纠错码(Error Correction Code),也可能指芯片设计中的MBIST内建自测,或是SAP ERP系统中的Central Component。从最基础的奇偶校验讲起,逐步深入到汉明码和SEC-DED算法,说明ECC如何在硬件层面识别并纠正比特翻转,保障数据可靠性。在服务器运维中,Uncorr. ECC报错常引发恐慌,文章合排查实例,给出从固件日志、内存互换到压力测试的完整处理路径。芯片领域,MBISTECC协同工作,通过故障注入

weixin_29193259的博客 295

ECC是什么?一文讲透内存纠错、芯片测试SAP

纠错码ECC)作为保障数据完整性的关键技术,在服务器内存芯片设计企业管理软件中却有着截然不同的内涵。在硬件层面,ECC通过冗余校验位实现单比特错误纠正双比特错误检测,是服务器稳定性的第一道防线;在芯片测试领域,MBIST内建自测试合故障注入验证纠错逻辑的有效性,满足车规级安全要求;在企业信息化中,SAP ECC则指代ERP核心组件,其涉及总账、资产、物料的联动作业。无论是服务器面板上“uncorr. ECC”报错,还是芯片出厂前的存储器测试,亦或财务底的操作,都围绕“错误检测修正”这一

weixin_29741447的博客 306

一个缩写三种世界:ECC内存纠错、存储排查SAP

ECC在技术领域常被误解为单一概念,其实它横跨多个层面:硬件纠错码是服务器内存和存储设备可靠性的基石,通过冗余校验实现单比特纠错和双比特检错;在硬盘NVMe设备中,uncorrectable ECC错误计数(如SMART日志中的‘uncorr. ecc 显示2’)是判断介质健康的关键指标,需合错误趋势综合排查。芯片测试领域中的MBIST ECC则通过故障注入验证片上存储器的自检纠错能力。此外,SAP ECC作为企业ERP组件,流程涉及固定资产、总账和物料模块的跨转。理解不同场景下ECC的含义、

weixin_32063439的博客 99

ECC三种含义全解析:SAP、MBIST纠错服务器报错排查

纠错码ECC)是计算机体系中保障数据可靠性的基础机制,从内存颗粒到芯片内部存储,都依赖它在错误发生时自动发现甚至修复。其核心原理可追溯到汉明码SEC-DED算法,通过额外校验位实现单比特纠错、双比特检测。在工程实践中,ECC的价值体现在不同层面:芯片设计阶段需要借助MBIST ECC验证存储阵列纠错逻辑是否正常;服务器运行阶段则通过日志中的uncorr. ecc 显示2等错误提示,反馈不可纠正的硬件故障;而在企业管理领域,SAP ECC作为ERP核心组件的度流程,同样考验数据完整性流程把控。理

weixin_33800463的博客 390
上一篇: C/C++—— 默认构造函数是否会执行
下一篇: 数据结构与算法——AVL树类的C++实现
readyao
博客等级 码龄11年 243粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值