[发明专利]一种构建内存树的方法及系统有效
申请号: | 200710076341.7 | 申请日: | 2007-06-27 |
公开(公告)号: | CN101082929A | 公开(公告)日: | 2007-12-05 |
发明(设计)人: | 华有为 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 深圳中一专利商标事务所 | 代理人: | 张全文 |
地址: | 518044广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 构建 内存 方法 系统 | ||
技术领域
本发明属于计算机网络通信领域,尤其涉及一种构建内存树的方法及系统。
背景技术
树是一种良好的数据结构,数据结构是反映一个数据的内部构成,即一个数据由那些数据元素构成,以及这些数据元素呈什么结构。一种高效的算法的设计依靠一种良好的数据结构,以加快内存数据插入、查询、删除的速度。
现有技术中构建内存树的方法主要有构建内存二叉搜索树和构建内存红黑树,其中:
二叉搜索树的构建方法如下所述:首先构建二叉搜索树的树根,然后将节点逐个插入至二叉搜索树中,在二叉搜索树中插入一个节点的过程如下,请参阅图1a至图1d,假设待插入节点的关键码值为20,首先将待插入节点的关键码值20与树根的关键码值90比较,若待插入节点的关键码值小于或者等于树根的关键码值,则进入左子树,否则进入右子树。在子树里又将待插入节点的关键码值20与子树根的关键码值进行比较,依次类推,直到把新节点插入到二叉搜索树中。在构建二叉搜索树时,内存是根据插入节点的增多而动态变化的,从而在内存数据插入、删除过程中将产生大量内存碎片。在二叉搜索树中插入相同节点时,将该待插入节点插入至二叉搜索树中与该待插入节点相同的节点的左子树中,从而在二叉搜索树中插入大量相同节点时,二叉搜索树的高度增加,从而增加内存数据插入、查询和删除的速度。
在二叉搜索树中删除一个节点的过程如下,请参阅图2,其根据待删除节点的子节点的不同有三种形式,当待删除节点只存在左孩子时,删除该待删除节点,并用该待删除节点的左孩子代替该待删除节点;当待删除节点的右孩子不存在左孩子时,则删除该待删除节点,并用该待删除节点的右孩子代替该待删除节点;当该待删除节点的右孩子存在左孩子时,则删除该待删除节点,并用该待删除节点的右子树中关键码值最小的节点代替该待删除节点。在二叉搜索树中无法自动删除节点,需要操作者自行删除节点,释放内存空间,从而使插入至二叉搜索树中的节点的数量受到内存空间大小的限制。
红黑树是一种为每个节点增加了颜色属性的二叉搜索树。构建红黑树的方法与构建二叉搜索树相似,不同之处在于,在红黑树中插入节点以及删除节点时,首先按二叉搜索树节点的插入和删除方法进行节点的插入和删除后,对插入和删除后形成的红黑树进行左旋转(Left-Rotate)或者右旋转(Right-Rotate),调整该红黑树的结构,以保持红黑树的平衡。在构建红黑树时,内存也是随着节点的插入动态变化的,从而在构建红黑树的过程中将产生大量内存碎片;在构建红黑树时,其内存节点无法自动释放,从而使插入节点的数量受到内存存储空间的限制;在红黑树中插入相同节点时,红黑树的高度将增加,使得当有大量相同节点插入时,降低了红黑树插入、删除以及查询的速度。
发明内容
本发明实施例的目的在于提供一种构建内存树的方法,旨在解决现有技术中构建内存树时,内存动态变化而产生大量内存碎片,同时不能自动释放内存空间的问题。
本发明实施例是这样实现的,一种构建内存树的方法,所述方法包括下述步骤:
为内存树分配一块固定内存,并对所述固定内存进行初始化,将所述固定内存中未使用的节点放入空闲队列,将已使用的节点放入已使用队列;判断所述空闲队列中是否存在节点,如果所述空闲队列中存在节点,且所述固定内存中还不存在内存树时,则将所述节点创建为内存树的树根,如果所述空闲队列中存在节点,且所述固定内存中存在内存树,则将所述节点作为待插入节点插入至所述内存树中,如果所述空闲队列中不存在节点,则从所述内存树中删除一个节点,再将所述节点作为待插入节点插入至所述内存树中。
本发明实施例的另一目的在于提供一种构建内存树的系统,所述系统包括:
空闲队列,用于存放所述内存中的未使用的节点;
已使用队列,用于存放所述内存中的已使用的节点;
内存分配及初始化模块,用于为内存树分配一块固定内存,并对所述固定内存进行初始化,将所述固定内存中未使用的节点放入所述空闲队列,将已使用的节点放入所述已使用队列;
空闲队列节点判断模块,用于判断所述空闲队列中是否存在节点;
内存树节点删除模块,用于从所述内存树中删除一个节点;以及
内存树节点插入模块,用于在所述固定内存中不存在内存树时,将所述空闲队列中的节点创建为内存树的树根,并在所述固定内存中存在内存树时,将所述空闲队列中的节点作为待插入节点插入至所述内存树中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710076341.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:三门冰箱的循环风道
- 下一篇:一种一次性安全自毁注射器