- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于二叉排序树的商的品信息动态检索研究
基于二叉排序树的商品信息动态检索研究
摘 要 随着关系数据库技术的应用越来越广泛,二叉树算法、结构化查询语言等研究对数据库查询有着实际的意义。论文提出一种用二叉排序树来表示关系表的方法,可提高商品信息的查询效率,根据用户的查询信息动态地提取用户的购买需求,形成指导企业经营的决策方案的实施计划,并在此基础上用JAVA、SQL对此二叉树进行查询和添加删改。 关键词 关系表;二叉排序树;动态检索;JAVA;SQL 1 问题的提出 目前流行的基于B/S模式的信息系统中对数据库表的查询操作大部分使用的是顺序查找法,即从第一行记录顺序的查找到满足查询条件的记录,由于数据量的巨大,查找的时间复杂度很大[1]。为此论文研究与实现了基于二叉排序树的商品信息动态检索,提高商品信息的查询效率。根据用户的查询信息动态的提取用户的购买需求,反馈给管理者,形成指导企业经营的决策方案的实施计划。2 问题的分析与实现2.1 建树 二叉排序树(Binary Sort Tree),简称BST 树,它是一种特殊的二叉树,其具有的特点:每个结点左子树上的所有结点的关键字,值均小于该结点的关键字值;每个结点右子树上的所有结点的关键字,值均大于或等于该结点的关键字值;左右子树本身又各是一棵二叉排序树[2]。二叉树的内存表示一般建立在含子树结点的指针基础上,我们这里用关系(二维表)的方法表示该二叉树。根据其数据库的商品汇总表建立该二叉树商品树表,表结构如表1所示。表1 COMMODITYTREE表结构SQL表示字段名数据类型作用备注COMMODITYIDint 节点的唯一标识COMMODITYNAMEtext商品名称COMMODITYPYvarchar 商品名称首字母FatherInfovarchar该结点的父结点信息SonInfobit该结点与父结点关系信息SearchCountint记录查询次数 将表中的每行记录看成一个包含若干数据项的数据结点,在表FatherInfo 字段中其值为NULL时表示该节点为根结点,SonInfo字段中用0或1分别表示该结点的左子树和右子树,这就和二叉树的内存表示对应起来。 按照二叉排序树的原理,根据COMMODITYTREE表中COMMODITYPY(商品名称首字母)字段的信息将COMMODITY TREE表中的FatherInfo 字段和SonInfo字段补充完整。2.2 树的平衡化问题 由于BST树的形状取决于各个元素被插入二叉树的先后顺序。一个新的元素作为一个新的结点被添加到二叉树中,有可能导致二叉排序树不平衡,使查询效率降低。平衡二叉排序树,又称为AVL树,它是一棵满足“任何一个结点的左右子树高度差绝对值不超过1”的二叉排序树。某结点的左子树高减去右子树高,称为该结点的平衡因子。平衡二叉树定义了一种机制,当树变得不平衡时,对二叉树进行调整,使之重新变为平衡的。基于这种平衡二叉树结构的查找算法,是目前所有动态查找算法中效率最高的。调整算法是旋转法,分别针对不同失衡结构采用左转、右转、先左转后右转、先右转后左转4种转法,对失衡的二叉树进行调整使其达到平衡状态[3]。 2.3 查询信息的处理 (1)将用户在浏览器上输入的要查询的商品名称转换为各字拼音的首字母。与COMMODITY TREE表中COMMOD ITYPY(商品名称首字母)字段信息依次比较各字母串中的字符,直到找到与用户输入商品名称拼音首字母相同的商品名。若首字母相同,还需进一步比较COMMODITYNAME是否相同,因为有可能出现不同商品名其首字母相同的情况。 (2)在设计之初,建立一个空数据表(NEEDCOMMOD ITY表)用来存储没有查询到的商品,其表结构如表2所示,当该产品被查询次数累计到一定值M(由管理者设定)时,要对管理者进行提醒是否该经销此商品。如果决定经销此商品并开始进货经销,则将其添加到相应的商品汇总表和COMMODITYTREE表。表2 NEEDCOMMODITY 表结构字段名类型作用备注NEEDCOMMODITYIDint节点的唯一标识NEEDCOMMODITYNAMEtext商品名称NEEDCOMMODITYPYvarchar商品名称首字母SearchCountint记录查询次数 (3)相反地,当商品汇总表中的某商品在一定时间内,被查询的次数未到一定值N(由管理者设定)时,就要对管理者进行提醒该产品是否已经滞销,应该对其进行低价处理等措施。如果一定时间内不打算再经销此商品,则可以从相应的商品汇总表和COMMODITYTREE表中将其删除。 2.4 设计实现 实现平衡二叉排序树的查询算法用Java语言实现,与数据库操作相关语句用SQL语言实现。用JDBC—ODBC与商品数据库建立连接。二叉排序树结点信息的实现算法:Public class Bina
原创力文档


文档评论(0)