CN111026765B - 严格平衡二叉树的动态处理方法、设备、存储介质及装置 - Google Patents

严格平衡二叉树的动态处理方法、设备、存储介质及装置 Download PDF

Info

Publication number
CN111026765B
CN111026765B CN201911299311.1A CN201911299311A CN111026765B CN 111026765 B CN111026765 B CN 111026765B CN 201911299311 A CN201911299311 A CN 201911299311A CN 111026765 B CN111026765 B CN 111026765B
Authority
CN
China
Prior art keywords
binary tree
keyword
balanced binary
node
strictly balanced
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911299311.1A
Other languages
English (en)
Other versions
CN111026765A (zh
Inventor
王防修
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Polytechnic University
Original Assignee
Wuhan Polytechnic University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Polytechnic University filed Critical Wuhan Polytechnic University
Priority to CN201911299311.1A priority Critical patent/CN111026765B/zh
Publication of CN111026765A publication Critical patent/CN111026765A/zh
Application granted granted Critical
Publication of CN111026765B publication Critical patent/CN111026765B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种严格平衡二叉树的动态处理方法、设备、存储介质及装置,该方法包括:获取目标数据,根据所述目标数据建立初始严格平衡二叉树,接收对所述初始严格平衡二叉树的数据处理指令,根据所述数据处理指令查找对应的目标处理模式,根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树。本发明中,在对由目标数据构建的初始严格平衡二叉树进行数据处理时,通过目标处理模式进行相应地处理操作,使得严格平衡二叉树在动态操作过程中始终保持严格平衡,使目标数据对应的二叉树得到最高的查找效率。

Description

严格平衡二叉树的动态处理方法、设备、存储介质及装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种严格平衡二叉树的动态处理方法、设备、存储介质及装置。
背景技术
为了充分利用内存碎片同时又能提高数据查找效率,人们使用二叉排序树来实现这一点。而在计算机进行内存数据查找时,为提高数据查找的效率,除了采用二叉排序树方式进行数据查询,又出现了查询效率更高的平衡二叉树。与平衡二叉树相比,严格平衡二叉树具有更高的查找效率。然而,一旦对严格平衡二叉进行插入,删除或修改操作后,严格平衡二叉树的严格平衡性会被打破,导致数据查找效率受到影响。因此,如何保证严格平衡二叉树在进行插入,删除或修改操作后,依旧保持严格平衡,是亟待解决的技术问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种严格平衡二叉树的动态处理方法、设备、存储介质及装置,旨在解决现有技术中如何保证严格平衡二叉树在进行插入,删除或修改操作后,依旧保持严格平衡的技术问题。
为实现上述目的,本发明提供一种严格平衡二叉树的动态处理方法,所述严格平衡二叉树的动态处理方法包括以下步骤:
获取目标数据,根据所述目标数据构建初始严格平衡二叉树;
接收对所述初始严格平衡二叉树的数据处理指令;
根据所述数据处理指令查找对应的目标处理模式;
根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树。
优选地,所述数据处理指令包括:插入关键字指令或删除关键字指令;
相应地,所述根据所述数据处理指令查找对应的目标处理模式,具体包括:
从所述插入关键字指令中提取待插入关键字,或,从所述删除关键字指令中提取待删除关键字;
判断所述初始严格平衡二叉树是否为空;
若所述初始严格平衡二叉树非空,则统计所述初始严格平衡二叉树的左子树的第一节点数和右子树的第二节点数;
比较所述第一节点数和所述第二节点数的大小,获得第一比较结果;
获取所述初始严格平衡二叉树的根节点关键字,比较所述待插入关键字与所述根节点关键字的值大小,获得第二比较结果;
根据所述数据处理指令、所述第一比较结果和所述第二比较结果,查找对应的目标处理模式。
优选地,所述根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树,具体包括:
在所述数据处理指令是所述插入关键字指令时,若所述第一比较结果为所述第一节点数大于或等于所述第二节点数,且所述待插入关键字的值大于所述根节点关键字的值,则在所述右子树上递归插入关键字为所述待插入关键字的第一插入节点,获得新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数小于或等于所述第二节点数,且所述待插入关键字的值小于所述根节点关键字的值,则在所述左子树上递归插入关键字为所述待插入关键字的第二插入节点,获得新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数小于所述第二节点数且所述待插入关键字的值大于所述根节点关键字的值,则通过二叉排序树的插入方式在所述初始平衡二叉树中插入关键字为所述待插入关键字的第三插入节点,获得第一二叉树,中序遍历局部所述第一二叉树以建立第一升序双链表,将所述第一升序双链表转换为新的严格平衡二叉树;
或者,若所述第一比较结果为所述第一节点数大于所述第二节点数且所述待插入关键字的值小于所述根节点关键字的值,则通过所述二叉排序树的插入方式在所述初始平衡二叉树中插入关键字为所述待插入关键字的所述第三插入节点,获得所述第一二叉树,中序遍历局部所述第一二叉树以建立所述第一升序双链表,将所述第一升序双链表转换为新的严格平衡二叉树。
优选地,所述根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树,具体包括:
在所述数据处理指令是所述删除关键字指令时,若所述第一比较结果为所述第一节点数大于或等于所述第二节点数,且所述待插入关键字的值小于所述根节点关键字的值,则在所述右子树上递归删除关键字为所述待删除关键字的第一删除节点,获得新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数小于或等于所述第二节点数,且所述待插入关键字的值大于所述根节点关键字的值,则在所述左子树上递归删除关键字为所述待删除关键字的第二删除节点,获得新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数大于所述第二节点数且所述待插入关键字的值大于所述根节点关键字的值,则通过二叉排序树的左子树关键字最大节点替换方式在所述初始平衡二叉树中删除关键字为所述待删除关键字的第三删除节点,获得第二二叉树,中序遍历局部所述第二二叉树以建立第二升序双链表,将所述第二升序双链表转换为新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数小于所述第二节点数且所述待插入关键字的值小于所述根节点关键字的值,则通过二叉排序树的右子树关键字最小节点替换方式在所述初始平衡二叉树中删除关键字为所述待删除关键字的第四删除节点,获得第三二叉树,中序遍历局部所述第三二叉树以建立第三升序双链表,将所述第三升序双链表转换为新的严格平衡二叉树。
优选地,所述判断所述初始严格平衡二叉树是否为空之后,所述严格平衡二叉树的动态处理方法还包括:
在所述数据处理指令是所述插入关键字指令时,若所述初始严格平衡二叉树为空,则建立一个关键字为所述待插入关键字的新建节点,并以所述新建节点作为根节点,获得新的严格平衡二叉树;
或者,
在所述数据处理指令是所述删除关键字指令时,若所述初始严格平衡二叉树为空,则进行报错。
优选地,所述数据处理指令包括:修改关键字指令;
相应地,所述根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树,具体包括:
从所述修改关键字指令中提取待修改关键字和目标关键字;
判断所述初始严格平衡二叉树中是否存在关键字是所述待修改关键字的待修改节点;
若所述初始严格平衡二叉树中存在所述待修改节点,则以严格平衡二叉树的删除节点方式删除所述初始严格平衡二叉树中的所述待修改节点;
通过严格平衡二叉树的插入节点方式在所述初始严格平衡二叉树中添加关键字为所述目标关键字的目标节点,获得新的严格平衡二叉树。
优选地,所述判断所述初始严格平衡二叉树中是否存在关键字是所述待修改关键字的待修改节点之后,所述严格平衡二叉树的动态处理方法还包括:
若所述初始严格平衡二叉树中不存在所述待修改节点,则进行报错;
判断所述初始严格平衡二叉树中是否存在关键字是所述目标关键字的所述目标节点;
若所述初始严格平衡二叉树中存在所述目标节点,则进行报错。
此外,为实现上述目的,本发明还提出一种严格平衡二叉树的动态处理设备,所述严格平衡二叉树的动态处理设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的严格平衡二叉树的动态处理程序,所述严格平衡二叉树的动态处理程序配置为实现如上文所述的严格平衡二叉树的动态处理方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有严格平衡二叉树的动态处理程序,所述严格平衡二叉树的动态处理程序被处理器执行时实现如上文所述的严格平衡二叉树的动态处理方法的步骤。
此外,为实现上述目的,本发明还提出一种严格平衡二叉树的动态处理装置,所述严格平衡二叉树的动态处理装置包括:
构建模块,用于获取目标数据,根据所述目标数据构建初始严格平衡二叉树;
接收模块,用于接收对所述初始严格平衡二叉树的数据处理指令;
查找模块,用于根据所述数据处理指令查找对应的目标处理模式;
处理模块,用于根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树。
本发明中,通过获取目标数据,根据所述目标数据建立初始严格平衡二叉树,接收对所述初始严格平衡二叉树的数据处理指令,根据所述数据处理指令查找对应的目标处理模式,根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树,通过目标处理模式进行相应地处理操作,使得严格平衡二叉树在动态操作过程中始终保持严格平衡,从而使得目标数据对应的二叉树得到最高的查找效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的严格平衡二叉树的动态处理设备的结构示意图;
图2为本发明严格平衡二叉树的动态处理方法第一实施例的流程示意图;
图3为本发明严格平衡二叉树的动态处理方法第二实施例的流程示意图;
图4为本发明严格平衡二叉树的动态处理方法第二实施例中任务(1)的完成结果示意图;
图5为本发明严格平衡二叉树的动态处理方法第二实施例中任务(2)的完成结果示意图;
图6为本发明严格平衡二叉树的动态处理方法第二实施例中任务(3)的完成结果示意图;
图7为本发明严格平衡二叉树的动态处理装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的严格平衡二叉树的动态处理设备结构示意图。
如图1所示,该严格平衡二叉树的动态处理设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display),可选用户接口1003还可以包括标准的有线接口、无线接口,对于用户接口1003的有线接口在本发明中可为USB接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(Random Access Memory,RAM)存储器,也可以是稳定的存储器(Non-volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对严格平衡二叉树的动态处理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及严格平衡二叉树的动态处理程序。
在图1所示的严格平衡二叉树的动态处理设备中,网络接口1004主要用于连接后台服务器,与所述后台服务器进行数据通信;用户接口1003主要用于连接用户设备;所述严格平衡二叉树的动态处理设备通过处理器1001调用存储器1005中存储的严格平衡二叉树的动态处理程序,并执行本发明实施例提供的严格平衡二叉树的动态处理方法。
所述严格平衡二叉树的动态处理设备通过处理器1001调用存储器1005中存储的严格平衡二叉树的动态处理程序,并执行以下操作:
获取目标数据,根据所述目标数据构建初始严格平衡二叉树;
接收对所述初始严格平衡二叉树的数据处理指令;
根据所述数据处理指令查找对应的目标处理模式;
根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树。
进一步地,所述数据处理指令包括:插入关键字指令或删除关键字指令;
所述严格平衡二叉树的动态处理设备通过处理器1001调用存储器1005中存储的严格平衡二叉树的动态处理程序,还执行以下操作:
从所述插入关键字指令中提取待插入关键字,或,从所述删除关键字指令中提取待删除关键字;
判断所述初始严格平衡二叉树是否为空;
若所述初始严格平衡二叉树非空,则统计所述初始严格平衡二叉树的左子树的第一节点数和右子树的第二节点数;
比较所述第一节点数和所述第二节点数的大小,获得第一比较结果;
获取所述初始严格平衡二叉树的根节点关键字,比较所述待插入关键字与所述根节点关键字的值大小,获得第二比较结果;
根据所述数据处理指令、所述第一比较结果和所述第二比较结果,查找对应的目标处理模式。
进一步地,所述严格平衡二叉树的动态处理设备通过处理器1001调用存储器1005中存储的严格平衡二叉树的动态处理程序,还执行以下操作:
在所述数据处理指令是所述插入关键字指令时,若所述第一比较结果为所述第一节点数大于或等于所述第二节点数,且所述待插入关键字的值大于所述根节点关键字的值,则在所述右子树上递归插入关键字为所述待插入关键字的第一插入节点,获得新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数小于或等于所述第二节点数,且所述待插入关键字的值小于所述根节点关键字的值,则在所述左子树上递归插入关键字为所述待插入关键字的第二插入节点,获得新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数小于所述第二节点数且所述待插入关键字的值大于所述根节点关键字的值,则通过二叉排序树的插入方式在所述初始平衡二叉树中插入关键字为所述待插入关键字的第三插入节点,获得第一二叉树,中序遍历局部所述第一二叉树以建立第一升序双链表,将所述第一升序双链表转换为新的严格平衡二叉树;
或者,若所述第一比较结果为所述第一节点数大于所述第二节点数且所述待插入关键字的值小于所述根节点关键字的值,则通过所述二叉排序树的插入方式在所述初始平衡二叉树中插入关键字为所述待插入关键字的所述第三插入节点,获得所述第一二叉树,中序遍历局部所述第一二叉树以建立所述第一升序双链表,将所述第一升序双链表转换为新的严格平衡二叉树。
进一步地,所述严格平衡二叉树的动态处理设备通过处理器1001调用存储器1005中存储的严格平衡二叉树的动态处理程序,还执行以下操作:
在所述数据处理指令是所述删除关键字指令时,若所述第一比较结果为所述第一节点数大于或等于所述第二节点数,且所述待插入关键字的值小于所述根节点关键字的值,则在所述右子树上递归删除关键字为所述待删除关键字的第一删除节点,获得新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数小于或等于所述第二节点数,且所述待插入关键字的值大于所述根节点关键字的值,则在所述左子树上递归删除关键字为所述待删除关键字的第二删除节点,获得新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数大于所述第二节点数且所述待插入关键字的值大于所述根节点关键字的值,则通过二叉排序树的左子树关键字最大节点替换方式在所述初始平衡二叉树中删除关键字为所述待删除关键字的第三删除节点,获得第二二叉树,中序遍历局部所述第二二叉树以建立第二升序双链表,将所述第二升序双链表转换为新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数小于所述第二节点数且所述待插入关键字的值小于所述根节点关键字的值,则通过二叉排序树的右子树关键字最小节点替换方式在所述初始平衡二叉树中删除关键字为所述待删除关键字的第四删除节点,获得第三二叉树,中序遍历局部所述第三二叉树以建立第三升序双链表,将所述第三升序双链表转换为新的严格平衡二叉树。
进一步地,所述严格平衡二叉树的动态处理设备通过处理器1001调用存储器1005中存储的严格平衡二叉树的动态处理程序,还执行以下操作:
在所述数据处理指令是所述插入关键字指令时,若所述初始严格平衡二叉树为空,则建立一个关键字为所述待插入关键字的新建节点,并以所述新建节点作为根节点,获得新的严格平衡二叉树;
或者,
在所述数据处理指令是所述删除关键字指令时,若所述初始严格平衡二叉树为空,则进行报错。
进一步地,所述数据处理指令包括:修改关键字指令;
所述严格平衡二叉树的动态处理设备通过处理器1001调用存储器1005中存储的严格平衡二叉树的动态处理程序,还执行以下操作:
从所述修改关键字指令中提取待修改关键字和目标关键字;
判断所述初始严格平衡二叉树中是否存在关键字是所述待修改关键字的待修改节点;
若所述初始严格平衡二叉树中存在所述待修改节点,则以严格平衡二叉树的删除节点方式删除所述初始严格平衡二叉树中的所述待修改节点;
通过严格平衡二叉树的插入节点方式在所述初始严格平衡二叉树中添加关键字为所述目标关键字的目标节点,获得新的严格平衡二叉树。
进一步地,所述严格平衡二叉树的动态处理设备通过处理器1001调用存储器1005中存储的严格平衡二叉树的动态处理程序,还执行以下操作:
若所述初始严格平衡二叉树中不存在所述待修改节点,则进行报错;
判断所述初始严格平衡二叉树中是否存在关键字是所述目标关键字的所述目标节点;
若所述初始严格平衡二叉树中存在所述目标节点,则进行报错。
本实施例中,通过获取目标数据,根据所述目标数据建立初始严格平衡二叉树,接收对所述初始严格平衡二叉树的数据处理指令,根据所述数据处理指令查找对应的目标处理模式,根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树,通过目标处理模式进行相应地处理操作,使得严格平衡二叉树在动态操作过程中始终保持严格平衡;接收数据查找指令,根据所述数据查找指令从所述新的严格平衡二叉树中进行数据查找,目标数据构建的严格平衡二叉树在动态操作过程中始终保持严格平衡,从而使得目标数据对应的二叉树得到最高的查找效率。
基于上述硬件结构,提出本发明严格平衡二叉树的动态处理方法的实施例。
参照图2,图2为本发明严格平衡二叉树的动态处理方法第一实施例的流程示意图,提出本发明严格平衡二叉树的动态处理方法第一实施例。
在第一实施例中,所述严格平衡二叉树的动态处理方法包括以下步骤:
步骤S10:获取目标数据,根据所述目标数据构建初始严格平衡二叉树。
应理解的是,本实施例的执行主体是所述严格平衡二叉树的动态处理设备,所述严格平衡二叉树的动态处理设备可以是个人计算机或者服务器等电子设备,本实施例对此不加以限制。所述目标数据是需要进行存储的数据,比如学生身份证信息、学生学号和学生考试成绩等数据,还可以是计算机内存数据等,本实施例对此不加以限制。采用分区式存储管理的系统,在储存分配过程中产生的、不能供用户作业使用的主存里的小分区称成内存碎片,为了充分利用内存碎片同时又能提高数据查找效率,可采用二叉树结构进行数据存储,由于严格平衡二叉树具有较高的数据查找效率,故将所述目标数据构建为所述初始严格平衡二叉树,以对所述目标数据进行存储,在需要查找所述目标数据中的某一具体数据值时,通过所述初始严格平衡二叉树,能够高效率地查找到需要的数据。
步骤S20:接收对所述初始严格平衡二叉树的数据处理指令。
可理解的是,所述数据处理指令包括插入关键字指令、删除关键字指令或修改关键字指令,根据所述数据处理指令对由所述目标数据构建的所述初始严格平衡二叉树进行插入、删除或修改操作。
步骤S30:根据所述数据处理指令查找对应的目标处理模式。
需要说明的是,由于对严格平衡二叉树的插入,删除和修改操作,一般只是对二叉树局部的严格平衡性造成破坏,故如果只对局部的严格平衡性进行调整,则会节省大量全局调整实际。现有方案总是在动态操作严格平衡二叉树后进行全局性调整,因此,本实施例中通过在动态操作严格平衡二叉树后进行局部性调整,能节省调整严格平衡二叉树所花费的时间。可预先建立各数据处理指令与处理模式之间的对应关系,从所述对应关系中查找与所述数据处理指令查找对应的目标处理模式,通过所述目标处理模式进行相应地插入、删除或修改操作,能够使得操作之后的二叉树保持严格平衡,从而使得目标数据对应的二叉树得到最高的查找效率。
步骤S40:根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树。
在具体实现中,根据所述目标处理模式,对所述初始严格平衡二叉树每增加一个新节点,通过动态调整使其仍然严格平衡;对所述初始严格平衡二叉树每删除一个节点,通过动态调整使其仍然严格平衡;对所述初始严格平衡二叉树每修改一个节点,通过动态调整使其仍然严格平衡。即根据所述目标处理模式对所述初始严格平衡二叉树进行插入、删除或修改操作,获得新的严格平衡二叉树。
应理解的是,为叙述方便,不妨将二叉树的结构定义如下:typedef struct node*bintree;struct node{int key;bintree lchild,rchild;};单链表定义如下:typedefstruct node1*link;struct node1{bintree data;link next;}。
1、向二叉排序中插入新节点,为保证二叉排序t中插入新节点x后仍然是二叉排序树,则递归插入过程如下:
(1)如果二叉排序t是空树,则插入的新节点x就是二叉树的根节点;
(2)如果二叉排序根节点t的关键字小于新节点x的关键词,则在二叉排序树t的左子树上递归插入新节点x;
(3)如果二叉排序根节点t的关键字大于新节点x的关键词,则在二叉排序树t的右子树上递归插入新节点x。
2、二叉排序中删除一个节点,为了保证二叉排序中删除一个节点后仍然是二叉排序树,需要用左子树关键字值最大节点替换待删除节点法或右子树关键字值最小节点替换待删除节点法。
左子树关键字值最大节点替换待删除节点法的递归过程如下:
(1)如果二叉树空,则返回;
(2)如果待删除节点的关键字值小于根节点关键字值,则在左子树递归删该节点;
(3)如果待删除节点的关键字值大于根节点关键字值,则在右子树递归删该节点;
(4)如果待删除节点的关键字值等于根节点关键字值,则分下列情况讨论:
1)如果root->lchild=NULL,则root=root->lchild;
2)如果root->rchild=NULL,则root=root->rchild;
3)如果root->lchild≠NULL和root->rchild≠NULL,则由左子树关键字值最大的节点代替根节点;
右子树关键字值最小节点替换待删除节点法的递归过程如下。
(1)如果二叉树空,则返回;
(2)如果待删除节点的关键字值小于根节点关键字值,则在左子树递归删该节点;
(3)如果待删除节点的关键字值大于根节点关键字值,则在右子树递归删该节点;
(4)如果待删除节点的关键字值等于根节点关键字值,则分下列情况讨论:
1)如果root->lchild=NULL,则root=root->lchild;
2)如果root->rchild=NULL,则root=root->rchild;
3)如果root->lchild≠NULL和root->rchild≠NULL,则由右子树关键字值最小的节点代替根节点。
3、二叉排序中修改一个节点,为了将二叉排序中关键字为key1的节点修改为键字为key2的节点,需要进行如下操作:
(1)查找关键字为key1的节点,如果不存在,则退出操作;
(2)查找关键字为key2的节点,如果存在,则退出操作;
(3)递归删除关键字为key1的节点;
(4)递归插入关键字为key2的节点;
4、二叉排序的查找,为了在二叉排序树中查找关键字为x->key的节点,其递归查询过程如下:
(1)如果二叉树是空树,则返回空地址;
(2)如果t->key=x->key,则返回根节点的地址;
(3)如果t->key>x->key,则在左子树t->lchild上查找关键字为x->key的节点;
(4)如果t->key<x->key,则在右子树t->rchild上查找关键字为x->key的节点。
可理解的是,在所述数据处理指令是删除关键字指令或插入关键字指令时,所述目标模式包括在右子树root->rchild上递归插入关键字为key的节点;或,在左子树root->lchild上递归插入关键字为key的节点;或,以二叉排序树的插入方式先插入关键字为key的节点,然后中序遍历局部二叉树以建立一个升序的双链表,最后将该双链表变成一个严格平衡二叉树。
应理解的是,在所述数据处理指令是修改关键字指令时,将二叉树中关键字为key1的节点修改为关键字为key2的节点,所述目标模式包括以严格平衡二叉树的删除节点方法删除二叉树中关键字为key1的节点,以严格平衡二叉树的插入节点方法添加二叉树中关键字为key2的节点。
在所述步骤S40之后,还包括:
接收数据查找指令,根据所述数据查找指令从所述新的严格平衡二叉树中进行数据查找。
需要说明的是,经过插入、删除或修改操作,所述目标数据构建的严格平衡二叉树依旧保持严格平衡,在接收到所述数据查找指令时,从所述数据查找指令中提取待查找数据,从所述新的严格平衡二叉树中查找所述待查证数据,从而持续保持高效地进行数据查找。
本实施例中,通过获取目标数据,根据所述目标数据建立初始严格平衡二叉树,接收对所述初始严格平衡二叉树的数据处理指令,根据所述数据处理指令查找对应的目标处理模式,根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树,通过目标处理模式进行相应地处理操作,使得严格平衡二叉树在动态操作过程中始终保持严格平衡,从而使得目标数据对应的二叉树得到最高的查找效率。
参照图3,图3为本发明严格平衡二叉树的动态处理方法第二实施例的流程示意图,基于上述图2所示的第一实施例,提出本发明严格平衡二叉树的动态处理方法的第二实施例。
在第二实施例中,所述步骤S30,包括:
步骤S301:所述数据处理指令包括:插入关键字指令或删除关键字指令,从所述插入关键字指令中提取待插入关键字,或,从所述删除关键字指令中提取待删除关键字。
应理解的是,所述插入关键字指令通常为在所述初始平衡二叉树中插入待插入关键字,则可从所述插入关键字指令中提取待插入关键字。所述删除关键字指令通常为在所述初始平衡二叉树中删除待删除关键字,则可从所述删除关键字指令中提取待删除关键字。
步骤S302:判断所述初始严格平衡二叉树是否为空。
可理解的是,若所述初始严格平衡二叉树中不存在节点,则所述初始严格平衡二叉树为空。在所述数据处理指令是插入关键字指令时,若所述初始严格平衡二叉树为空,则申请一个关键字为key的节点,并以该节点作为根节点返回。在所述数据处理指令是删除关键字指令时,若所述初始严格平衡二叉树为空,则报错并返回。本实施例中,所述步骤S302之后,还包括:在所述数据处理指令是所述插入关键字指令时,若所述初始严格平衡二叉树为空,则建立一个关键字为所述待插入关键字的新建节点,并以所述新建节点作为根节点,获得新的严格平衡二叉树;或者,在所述数据处理指令是所述删除关键字指令时,若所述初始严格平衡二叉树为空,则进行报错。
步骤S303:若所述初始严格平衡二叉树非空,则统计所述初始严格平衡二叉树的左子树的第一节点数和右子树的第二节点数。
需要说明的是,如果二叉树非空,统计二叉树的左子树的节点数lc和右子树的节点数rc,即所述第一节点数lc和所述第二节点数rc。
步骤S304:比较所述第一节点数和所述第二节点数的大小,获得第一比较结果。
在具体实现中,将所述第一节点数lc和所述第二节点数rc进行大小比较,获得所述第一比较结果,所述第一比较结果包括:lc≥rc、lc≤rc、lc>rc或lc<rc。
步骤S305:获取所述初始严格平衡二叉树的根节点关键字,比较所述待插入关键字与所述根节点关键字的值大小,获得第二比较结果。
应理解的是,获取所述初始严格平衡二叉树的根节点关键字root->key,比较所述待插入关键字与所述根节点关键字key的值大小,获得第二比较结果,所述第二比较结果包括:key<root->key或key>root->key。
步骤S306:根据所述数据处理指令、所述第一比较结果和所述第二比较结果,查找对应的目标处理模式。
需要说明的是,在所述数据处理指令是所述插入关键字指令时,如果lc≥rc和key>root->key,则在右子树root->rchild上递归插入关键字为key的节点;如果lc≤rc和key<root->key,则在左子树root->lchild上递归插入关键字为key的节点;如果lc<rc和key>root->key或lc>rc和key<root->key,则以二叉排序树的插入方式先插入关键字为key的节点,然后中序遍历局部二叉树以建立一个升序的双链表,最后将该双链表变成一个严格平衡二叉树。在本实施例中,所述步骤S40,包括:在所述数据处理指令是所述插入关键字指令时,若所述第一比较结果为所述第一节点数大于或等于所述第二节点数,且所述待插入关键字的值大于所述根节点关键字的值,则在所述右子树上递归插入关键字为所述待插入关键字的第一插入节点,获得新的严格平衡二叉树;或者,若所述第一比较结果为所述第一节点数小于或等于所述第二节点数,且所述待插入关键字的值小于所述根节点关键字的值,则在所述左子树上递归插入关键字为所述待插入关键字的第二插入节点,获得新的严格平衡二叉树;或者,若所述第一比较结果为所述第一节点数小于所述第二节点数且所述待插入关键字的值大于所述根节点关键字的值,则通过二叉排序树的插入方式在所述初始平衡二叉树中插入关键字为所述待插入关键字的第三插入节点,获得第一二叉树,中序遍历局部所述第一二叉树以建立第一升序双链表,将所述第一升序双链表转换为新的严格平衡二叉树;或者,若所述第一比较结果为所述第一节点数大于所述第二节点数且所述待插入关键字的值小于所述根节点关键字的值,则通过所述二叉排序树的插入方式在所述初始平衡二叉树中插入关键字为所述待插入关键字的所述第三插入节点,获得所述第一二叉树,中序遍历局部所述第一二叉树以建立所述第一升序双链表,将所述第一升序双链表转换为新的严格平衡二叉树。
应理解的是,在所述数据处理指令是删除关键字指令,如果lc≥rc和key<root->key,则在右子树root->rchild上递归删除关键字为key的节点;如果lc≤rc和key>root->key,则在左子树root->lchild上递归删除关键字为key的节点;如果lc>rc和key>root->key,则以二叉排序树的左子树关键字最大节点替换法删除关键字为key的节点,然后中序遍历局部二叉树以建立一个升序的双链表,最后将该双链表变成一个严格平衡二叉树。如果lc<rc和key<root->key,则以二叉排序树的右子树关键字最小节点替换法删除关键字为key的节点,然后中序遍历局部二叉树以建立一个升序的双链表,最后将该双链表变成一个严格平衡二叉树。在本实施例中,所述步骤S40,还包括:在所述数据处理指令是所述删除关键字指令时,若所述第一比较结果为所述第一节点数大于或等于所述第二节点数,且所述待插入关键字的值小于所述根节点关键字的值,则在所述右子树上递归删除关键字为所述待删除关键字的第一删除节点,获得新的严格平衡二叉树;或者,若所述第一比较结果为所述第一节点数小于或等于所述第二节点数,且所述待插入关键字的值大于所述根节点关键字的值,则在所述左子树上递归删除关键字为所述待删除关键字的第二删除节点,获得新的严格平衡二叉树;或者,若所述第一比较结果为所述第一节点数大于所述第二节点数且所述待插入关键字的值大于所述根节点关键字的值,则通过二叉排序树的左子树关键字最大节点替换方式在所述初始平衡二叉树中删除关键字为所述待删除关键字的第三删除节点,获得第二二叉树,中序遍历局部所述第二二叉树以建立第二升序双链表,将所述第二升序双链表转换为新的严格平衡二叉树;或者,若所述第一比较结果为所述第一节点数小于所述第二节点数且所述待插入关键字的值小于所述根节点关键字的值,则通过二叉排序树的右子树关键字最小节点替换方式在所述初始平衡二叉树中删除关键字为所述待删除关键字的第四删除节点,获得第三二叉树,中序遍历局部所述第三二叉树以建立第三升序双链表,将所述第三升序双链表转换为新的严格平衡二叉树。
进一步地,在本实施例中,所述数据处理指令包括:修改关键字指令;
所述步骤S40,还包括:
从所述修改关键字指令中提取待修改关键字和目标关键字;
判断所述初始严格平衡二叉树中是否存在关键字是所述待修改关键字的待修改节点;
若所述初始严格平衡二叉树中存在所述待修改节点,则以严格平衡二叉树的删除节点方式删除所述初始严格平衡二叉树中的所述待修改节点;
通过严格平衡二叉树的插入节点方式在所述初始严格平衡二叉树中添加关键字为所述目标关键字的目标节点,获得新的严格平衡二叉树。
应理解的是,将所述初始严格平衡二叉树中的关键字为key1的节点修改为关键字为key2的节点过程如下:如果所述初始严格平衡二叉树中不存在关键字为key1的节点,则报错并返回;如果所述初始严格平衡二叉树中存在关键字为key2的节点,则报错并返回;以严格平衡二叉树的删除节点方式删除二叉树中关键字为key1的节点;以严格平衡二叉树的插入节点方式添加二叉树中关键字为key2的节点。在本实施例中,所述判断所述初始严格平衡二叉树中是否存在关键字是所述待修改关键字的待修改节点之后,所述严格平衡二叉树的动态处理方法还包括:若所述初始严格平衡二叉树中不存在所述待修改节点,则进行报错;判断所述初始严格平衡二叉树中是否存在关键字是所述目标关键字的所述目标节点;若所述初始严格平衡二叉树中存在所述目标节点,则进行报错。
可理解的是,可建立测试环境:使用VC6.0作为测试工具,在CPU为3.2GHz和内存为1.86GB的个人台式电脑上完成测试。
例:现有关键字集合{46 26 43 18 74 21 45 57},要求完成下列任务:
任务(1)将集合中的关键字依次插入严格平衡二叉树中;
任务(2)删除严格平衡二叉树中关键字为21的节点。
任务(3)将严格平衡二叉树中关键字46修改为60。
任务(1)的完成结果如图4所示,图4为本发明严格平衡二叉树的动态处理方法第二实施例中任务(1)的完成结果示意图。任务(2)的完成结果如图5所示,图5为本发明严格平衡二叉树的动态处理方法第二实施例中任务(2)的完成结果示意图。任务(3)的完成结果如图6所示,图6为本发明严格平衡二叉树的动态处理方法第二实施例中任务(3)的完成结果示意图。
在本实施例中,为了提高数据的查询效率,根据目标数据建立严格平衡二叉树,平衡二叉树只需要满足:每个节点的左子树高度与右子树高度相差不能超过1。但是,严格平衡二叉树不但满足平衡二叉树的条件,同时它要求树中每个节点的左子树节点数与右子树节点数不超过1。因此,严格平衡二叉树比平衡二叉树有更高的查找效率。通过对所述初始严格平衡二叉树进行插入、删除或修改操作过程中保持二叉树的严格平衡,从而确保数据的查找效率。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有严格平衡二叉树的动态处理程序,所述严格平衡二叉树的动态处理程序被处理器执行时实现如下步骤:
获取目标数据,根据所述目标数据构建初始严格平衡二叉树;
接收对所述初始严格平衡二叉树的数据处理指令;
根据所述数据处理指令查找对应的目标处理模式;
根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树。
进一步地,所述数据处理指令包括:插入关键字指令或删除关键字指令;
所述严格平衡二叉树的动态处理程序被处理器执行时还实现如下操作:
从所述插入关键字指令中提取待插入关键字,或,从所述删除关键字指令中提取待删除关键字;
判断所述初始严格平衡二叉树是否为空;
若所述初始严格平衡二叉树非空,则统计所述初始严格平衡二叉树的左子树的第一节点数和右子树的第二节点数;
比较所述第一节点数和所述第二节点数的大小,获得第一比较结果;
获取所述初始严格平衡二叉树的根节点关键字,比较所述待插入关键字与所述根节点关键字的值大小,获得第二比较结果;
根据所述数据处理指令、所述第一比较结果和所述第二比较结果,查找对应的目标处理模式。
进一步地,所述严格平衡二叉树的动态处理程序被处理器执行时还实现如下操作:
在所述数据处理指令是所述插入关键字指令时,若所述第一比较结果为所述第一节点数大于或等于所述第二节点数,且所述待插入关键字的值大于所述根节点关键字的值,则在所述右子树上递归插入关键字为所述待插入关键字的第一插入节点,获得新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数小于或等于所述第二节点数,且所述待插入关键字的值小于所述根节点关键字的值,则在所述左子树上递归插入关键字为所述待插入关键字的第二插入节点,获得新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数小于所述第二节点数且所述待插入关键字的值大于所述根节点关键字的值,则通过二叉排序树的插入方式在所述初始平衡二叉树中插入关键字为所述待插入关键字的第三插入节点,获得第一二叉树,中序遍历局部所述第一二叉树以建立第一升序双链表,将所述第一升序双链表转换为新的严格平衡二叉树;
或者,若所述第一比较结果为所述第一节点数大于所述第二节点数且所述待插入关键字的值小于所述根节点关键字的值,则通过所述二叉排序树的插入方式在所述初始平衡二叉树中插入关键字为所述待插入关键字的所述第三插入节点,获得所述第一二叉树,中序遍历局部所述第一二叉树以建立所述第一升序双链表,将所述第一升序双链表转换为新的严格平衡二叉树。
进一步地,所述严格平衡二叉树的动态处理程序被处理器执行时还实现如下操作:
在所述数据处理指令是所述删除关键字指令时,若所述第一比较结果为所述第一节点数大于或等于所述第二节点数,且所述待插入关键字的值小于所述根节点关键字的值,则在所述右子树上递归删除关键字为所述待删除关键字的第一删除节点,获得新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数小于或等于所述第二节点数,且所述待插入关键字的值大于所述根节点关键字的值,则在所述左子树上递归删除关键字为所述待删除关键字的第二删除节点,获得新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数大于所述第二节点数且所述待插入关键字的值大于所述根节点关键字的值,则通过二叉排序树的左子树关键字最大节点替换方式在所述初始平衡二叉树中删除关键字为所述待删除关键字的第三删除节点,获得第二二叉树,中序遍历局部所述第二二叉树以建立第二升序双链表,将所述第二升序双链表转换为新的严格平衡二叉树;
或者,
若所述第一比较结果为所述第一节点数小于所述第二节点数且所述待插入关键字的值小于所述根节点关键字的值,则通过二叉排序树的右子树关键字最小节点替换方式在所述初始平衡二叉树中删除关键字为所述待删除关键字的第四删除节点,获得第三二叉树,中序遍历局部所述第三二叉树以建立第三升序双链表,将所述第三升序双链表转换为新的严格平衡二叉树。
进一步地,所述严格平衡二叉树的动态处理程序被处理器执行时还实现如下操作:
在所述数据处理指令是所述插入关键字指令时,若所述初始严格平衡二叉树为空,则建立一个关键字为所述待插入关键字的新建节点,并以所述新建节点作为根节点,获得新的严格平衡二叉树;
或者,
在所述数据处理指令是所述删除关键字指令时,若所述初始严格平衡二叉树为空,则进行报错。
进一步地,所述数据处理指令包括:修改关键字指令;
所述严格平衡二叉树的动态处理程序被处理器执行时还实现如下操作:
从所述修改关键字指令中提取待修改关键字和目标关键字;
判断所述初始严格平衡二叉树中是否存在关键字是所述待修改关键字的待修改节点;
若所述初始严格平衡二叉树中存在所述待修改节点,则以严格平衡二叉树的删除节点方式删除所述初始严格平衡二叉树中的所述待修改节点;
通过严格平衡二叉树的插入节点方式在所述初始严格平衡二叉树中添加关键字为所述目标关键字的目标节点,获得新的严格平衡二叉树。
进一步地,所述严格平衡二叉树的动态处理程序被处理器执行时还实现如下操作:
若所述初始严格平衡二叉树中不存在所述待修改节点,则进行报错;
判断所述初始严格平衡二叉树中是否存在关键字是所述目标关键字的所述目标节点;
若所述初始严格平衡二叉树中存在所述目标节点,则进行报错。
进一步地,所述严格平衡二叉树的动态处理程序被处理器执行时还实现如下操作:
本实施例中,通过获取目标数据,根据所述目标数据建立初始严格平衡二叉树,接收对所述初始严格平衡二叉树的数据处理指令,根据所述数据处理指令查找对应的目标处理模式,根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树,通过目标处理模式进行相应地处理操作,使得严格平衡二叉树在动态操作过程中始终保持严格平衡;接收数据查找指令,根据所述数据查找指令从所述新的严格平衡二叉树中进行数据查找,目标数据构建的严格平衡二叉树在动态操作过程中始终保持严格平衡,从而使得目标数据对应的二叉树得到最高的查找效率。
此外,参照图7,本发明实施例还提出一种严格平衡二叉树的动态处理装置,所述严格平衡二叉树的动态处理装置包括:
构建模块10,用于获取目标数据,根据所述目标数据构建初始严格平衡二叉树;
接收模块20,用于接收对所述初始严格平衡二叉树的数据处理指令;
查找模块30,用于根据所述数据处理指令查找对应的目标处理模式;
处理模块40,用于根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树。
本发明所述严格平衡二叉树的动态处理装置的实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。词语第一、第二、以及第三等的使用不表示任何顺序,可将这些词语解释为标识。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器镜像(Read Only Memory image,ROM)/随机存取存储器(Random AccessMemory,RAM)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (7)

1.一种严格平衡二叉树的动态处理方法,其特征在于,所述严格平衡二叉树的动态处理方法包括以下步骤:
获取目标数据,所述目标数据是计算机内存数据,将所述目标数据构建为初始严格平衡二叉树,以对所述目标数据进行存储,并通过所述初始严格平衡二叉树查找所述目标数据中的某一具体数据;
接收对所述初始严格平衡二叉树的数据处理指令;
根据所述数据处理指令查找对应的目标处理模式;
根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树;
所述数据处理指令包括:插入关键字指令或删除关键字指令;
相应地,所述根据所述数据处理指令查找对应的目标处理模式,具体包括:
从所述插入关键字指令中提取待插入关键字,或,从所述删除关键字指令中提取待删除关键字;
判断所述初始严格平衡二叉树是否为空;
若所述初始严格平衡二叉树非空,则统计所述初始严格平衡二叉树的左子树的第一节点数和右子树的第二节点数;
比较所述第一节点数和所述第二节点数的大小,获得第一比较结果;
获取所述初始严格平衡二叉树的根节点关键字,比较所述待插入关键字与所述根节点关键字的值大小,获得第二比较结果;
根据所述数据处理指令、所述第一比较结果和所述第二比较结果,查找对应的目标处理模式;
所述根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树,具体包括:
在所述数据处理指令是所述删除关键字指令时,若所述第一比较结果为所述第一节点数大于或等于所述第二节点数,且所述待删除关键字的值小于所述根节点关键字的值,则在所述左子树上递归删除关键字为所述待删除关键字的第一删除节点,获得新的严格平衡二叉树;
若所述第一比较结果为所述第一节点数小于或等于所述第二节点数,且所述待删除关键字的值大于所述根节点关键字的值,则在所述右子树上递归删除关键字为所述待删除关键字的第二删除节点,获得新的严格平衡二叉树;
若所述第一比较结果为所述第一节点数大于所述第二节点数且所述待删除关键字的值大于所述根节点关键字的值,则通过二叉排序树的左子树关键字最大节点替换方式在所述初始严格平衡二叉树中删除关键字为所述待删除关键字的第三删除节点,获得第二二叉树,中序遍历局部所述第二二叉树以建立第二升序双链表,将所述第二升序双链表转换为新的严格平衡二叉树;
若所述第一比较结果为所述第一节点数小于所述第二节点数且所述待删除关键字的值小于所述根节点关键字的值,则通过二叉排序树的右子树关键字最小节点替换方式在所述初始严格平衡二叉树中删除关键字为所述待删除关键字的第四删除节点,获得第三二叉树,中序遍历局部所述第三二叉树以建立第三升序双链表,将所述第三升序双链表转换为新的严格平衡二叉树。
2.如权利要求1所述的严格平衡二叉树的动态处理方法,其特征在于,所述根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树,具体包括:
在所述数据处理指令是所述插入关键字指令时,若所述第一比较结果为所述第一节点数大于或等于所述第二节点数,且所述待插入关键字的值大于所述根节点关键字的值,则在所述右子树上递归插入关键字为所述待插入关键字的第一插入节点,获得新的严格平衡二叉树;
若所述第一比较结果为所述第一节点数小于或等于所述第二节点数,且所述待插入关键字的值小于所述根节点关键字的值,则在所述左子树上递归插入关键字为所述待插入关键字的第二插入节点,获得新的严格平衡二叉树;
若所述第一比较结果为所述第一节点数小于所述第二节点数且所述待插入关键字的值大于所述根节点关键字的值,则通过二叉排序树的插入方式在所述初始严格平衡二叉树中插入关键字为所述待插入关键字的第三插入节点,获得第一二叉树,中序遍历局部所述第一二叉树以建立第一升序双链表,将所述第一升序双链表转换为新的严格平衡二叉树;
若所述第一比较结果为所述第一节点数大于所述第二节点数且所述待插入关键字的值小于所述根节点关键字的值,则通过所述二叉排序树的插入方式在所述初始严格平衡二叉树中插入关键字为所述待插入关键字的所述第三插入节点,获得所述第一二叉树,中序遍历局部所述第一二叉树以建立所述第一升序双链表,将所述第一升序双链表转换为新的严格平衡二叉树。
3.如权利要求1所述的严格平衡二叉树的动态处理方法,其特征在于,所述判断所述初始严格平衡二叉树是否为空之后,所述严格平衡二叉树的动态处理方法还包括:
在所述数据处理指令是所述插入关键字指令时,若所述初始严格平衡二叉树为空,则建立一个关键字为所述待插入关键字的新建节点,并以所述新建节点作为根节点,获得新的严格平衡二叉树;
或者,
在所述数据处理指令是所述删除关键字指令时,若所述初始严格平衡二叉树为空,则进行报错。
4.如权利要求2所述的严格平衡二叉树的动态处理方法,其特征在于,所述数据处理指令包括:修改关键字指令;
相应地,所述根据所述目标处理模式,对所述初始严格平衡二叉树进行处理,获得新的严格平衡二叉树,具体包括:
从所述修改关键字指令中提取待修改关键字和目标关键字;
判断所述初始严格平衡二叉树中是否存在关键字是所述待修改关键字的待修改节点;
若所述初始严格平衡二叉树中存在所述待修改节点,则以严格平衡二叉树的删除节点方式删除所述初始严格平衡二叉树中的所述待修改节点;
通过严格平衡二叉树的插入节点方式在所述初始严格平衡二叉树中添加关键字为所述目标关键字的目标节点,获得新的严格平衡二叉树。
5.如权利要求4所述的严格平衡二叉树的动态处理方法,其特征在于,所述判断所述初始严格平衡二叉树中是否存在关键字是所述待修改关键字的待修改节点之后,所述严格平衡二叉树的动态处理方法还包括:
若所述初始严格平衡二叉树中不存在所述待修改节点,则进行报错;
判断所述初始严格平衡二叉树中是否存在关键字是所述目标关键字的所述目标节点;
若所述初始严格平衡二叉树中存在所述目标节点,则进行报错。
6.一种严格平衡二叉树的动态处理设备,其特征在于,所述严格平衡二叉树的动态处理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的严格平衡二叉树的动态处理程序,所述严格平衡二叉树的动态处理程序被所述处理器执行时实现如权利要求1至5中任一项所述的严格平衡二叉树的动态处理方法的步骤。
7.一种存储介质,其特征在于,所述存储介质上存储有严格平衡二叉树的动态处理程序,所述严格平衡二叉树的动态处理程序被处理器执行时实现如权利要求1至5中任一项所述的严格平衡二叉树的动态处理方法的步骤。
CN201911299311.1A 2019-12-16 2019-12-16 严格平衡二叉树的动态处理方法、设备、存储介质及装置 Active CN111026765B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911299311.1A CN111026765B (zh) 2019-12-16 2019-12-16 严格平衡二叉树的动态处理方法、设备、存储介质及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911299311.1A CN111026765B (zh) 2019-12-16 2019-12-16 严格平衡二叉树的动态处理方法、设备、存储介质及装置

Publications (2)

Publication Number Publication Date
CN111026765A CN111026765A (zh) 2020-04-17
CN111026765B true CN111026765B (zh) 2023-07-14

Family

ID=70209913

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911299311.1A Active CN111026765B (zh) 2019-12-16 2019-12-16 严格平衡二叉树的动态处理方法、设备、存储介质及装置

Country Status (1)

Country Link
CN (1) CN111026765B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559532B (zh) * 2020-12-23 2024-02-20 北京梆梆安全科技有限公司 一种基于红黑树的数据插入方法、装置及电子设备
CN113778948A (zh) * 2021-09-01 2021-12-10 中国人民银行清算总中心 消息持久化存储方法及装置
CN113722016A (zh) * 2021-09-10 2021-11-30 拉卡拉支付股份有限公司 应用程序配置方法、装置、设备、存储介质及程序产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521334A (zh) * 2011-12-07 2012-06-27 广东工业大学 一种基于分类特性和平衡二叉树的数据存储、查询方法
CN105117395A (zh) * 2015-05-11 2015-12-02 电子科技大学 基于位置线索平衡二叉树的相邻车辆的查询算法
CN109815238A (zh) * 2019-01-18 2019-05-28 武汉轻工大学 用严格平衡二叉树实现数据库的动态添加方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7447698B2 (en) * 2005-12-13 2008-11-04 International Business Machines Corporation Method for balancing binary search trees
CN101515298B (zh) * 2009-03-30 2013-09-25 华为技术有限公司 基于树形数据结构节点的插入的方法和存储装置
WO2015047423A1 (en) * 2013-09-30 2015-04-02 Mindjet Llc Scoring members of a set dependent on eliciting preference data amongst subsets selected according to a height-balanced tree

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521334A (zh) * 2011-12-07 2012-06-27 广东工业大学 一种基于分类特性和平衡二叉树的数据存储、查询方法
CN105117395A (zh) * 2015-05-11 2015-12-02 电子科技大学 基于位置线索平衡二叉树的相邻车辆的查询算法
CN109815238A (zh) * 2019-01-18 2019-05-28 武汉轻工大学 用严格平衡二叉树实现数据库的动态添加方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
严格平衡二叉排序树及其构造;岑岗,周炳生;《计算机工程与应用》;2005年(第13期);第57-60 *
基于双链表的严格平衡二叉树建立;王防修,刘春红;《武汉轻工大学学报》;第34卷(第03期);第75-79页 *

Also Published As

Publication number Publication date
CN111026765A (zh) 2020-04-17

Similar Documents

Publication Publication Date Title
CN111026765B (zh) 严格平衡二叉树的动态处理方法、设备、存储介质及装置
CN109559234B (zh) 一种区块链状态数据的存储方法、设备和存储介质
CN109829287A (zh) Api接口权限访问方法、设备、存储介质及装置
AU2017268599B2 (en) Method, device, server and storage medium of searching a group based on social network
CN109408507B (zh) 多属性数据的处理方法、装置、设备及可读存储介质
CN107426041B (zh) 一种解析命令的方法和装置
CN110688096B (zh) 包含插件的应用程序的构建方法、装置、介质及电子设备
US11163726B2 (en) Context aware delta algorithm for genomic files
CN108415998B (zh) 应用依赖关系更新方法、终端、设备及存储介质
CN111813744A (zh) 文件的搜索方法、装置、设备及存储介质
CN111159040A (zh) 一种测试数据生成方法、装置、设备及存储介质
CN110222046B (zh) 列表数据的处理方法、装置、服务器和存储介质
CN115185998A (zh) 目标字段查找方法及装置、服务器、计算机可读存储介质
CN112667538B (zh) 一种获取网卡标识号方法、系统、设备以及介质
CN110471708B (zh) 基于可重用组件的配置项获取的方法及装置
CN110647753B (zh) 内核文件的获取方法、装置、设备及存储介质
CN113419957A (zh) 基于规则的大数据离线批处理性能容量扫描方法及装置
CN113342270A (zh) 卷卸载方法、装置和电子设备
CN113448869A (zh) 测试用例生成的方法、装置、电子设备及计算机可读介质
CN113127357A (zh) 单元测试方法、装置、设备、存储介质及程序产品
CN111538651A (zh) 接口测试方法、装置、服务器及存储介质
CN109947775B (zh) 数据处理方法、装置、电子设备及计算机可读介质
CN109284097A (zh) 实现复杂数据分析的方法、设备、系统及存储介质
CN112738207B (zh) 关键字数据的传输方法及装置、存储介质、电子装置
CN113840020B (zh) 基于ip地址信息的定位方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant