一种基于二叉树的字符串表达式计算方法及装置制造方法及图纸

技术编号:21184728 阅读:23 留言:0更新日期:2019-05-22 15:20
本发明专利技术公开了一种基于二叉树的字符串表达式计算方法及装置,属于计算机技术领域,其方法如下:获取输入字符串:例如“IP Type==192.168.1.1AND ProType==TCP”;解析字段类型:例如IP地址类型、IP协议类型;解析操作符:例如==符号、AND符号;获取字符前缀表达式;将字符串装入二叉树中;计算二叉树,获得表达式结果,本发明专利技术通过二叉树计算的技术,解决纯文字字符串的表达式类型的语义判断问题。

A Method and Device for Computing String Expressions Based on Binary Tree

The invention discloses a method and device for computing string expression based on binary tree, which belongs to the field of computer technology. The method is as follows: obtaining input string, such as \IP Type==192.168.1.1AND ProType==TCP\; resolving field type, such as IP address type, IP protocol type; resolving operator, such as == symbol, AND symbol; acquiring character prefix. Expressions; Loading strings into binary trees; Computing binary trees to obtain expression results. The present invention solves the problem of semantic judgment of expression types of pure text strings by using binary tree computing technology.

【技术实现步骤摘要】
一种基于二叉树的字符串表达式计算方法及装置
本专利技术涉及计算机
,更具体地说,涉及一种基于二叉树的字符串表达式计算方法及装置。
技术介绍
前缀表达式:是一种没有括号的算术表达式,其将运算符写在前面,操作数写在后面。二叉树:在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(leftsubtree)和“右子树”(rightsubtree)。现有技术;互联网上的现有技术主要为通过字符串表达式求值,其操作的字符范围为数字以及数学符号,形如“(4+3*2)/2”的表达式。现有技术的缺点主要是:1、无法进行纯字符串的表达,此类表达一般都含有较大业务意义,例如“IP地址==192.168.1.1并且协议类型==TCP”。2、只能对数字等简单类型做操作,无法进行自定义扩展类型的操作。
技术实现思路
1.要解决的技术问题针对现有技术中存在的问题,本专利技术的目的在于提供一种基于二叉树的字符串表达式计算方法及装置,它通过二叉树计算的技术,解决纯文字字符串的表达式类型的语义判断问题。2.技术方案为解决上述问题,本专利技术采用如下的技术方案。一种基于二叉树的字符串表达式计算方法及装置,所述方法如下:S1、获取输入字符串;S2、解析字段类型;S3、解析操作符;S4、获取字符前缀表达式;S5、将字符串装入二叉树中;S6、计算二叉树,获得表达式结果。进一步的,上述方法通过java实现,具体步骤如下:(A)抽象自定义类型;(B)定义操作符类型;(C)将字符串转换为二叉树;(D)实现二叉树计算。进一步的,所述步骤(A)中,定义抽象基类,包括如下接口:(a)获取该类型支持的操作符接口;(b)执行表达式接口;(c)判断是否为此类型字段。进一步的,所述步骤(B)中,定义操作符基类,包括如下接口(a)计算两个值及操作符的执行结果,并返回;(b)判断是否为此类型操作符。进一步的,所述步骤(C)中,将字符串按(A)和(B)步骤解析后,判断出字符类型和操作符类型,根据前缀表达式得到二叉树:(a)碰到操作数则把其值赋给相应的新申请的二叉树结点,地址压栈;(b)碰到操作符则把其值赋给相应的新申请的二叉树,并从栈中弹出两个地址;(c)分别作为其左指针和右指针,然后再把其地址压栈,最后一个地址即为二叉树的根结点地址。进一步的,所述步骤(D)中,所述步骤(D)中,递归实现每个二叉树子树的计算,假如已经为无子节点的节点,则调用操作符类对象的接口,实现当前二叉树子树的计算,完成所有二叉树计算后,得到当前整个二叉树的最终值,也就完成了表达式的计算。3.有益效果相比于现有技术,本专利技术的优点在于:本专利技术通过二叉树计算的技术,解决纯文字字符串的表达式类型的语义判断问题。附图说明图1为本专利技术的流程图具体实施方式下面将结合本专利技术实施例中的附图对本专利技术实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例,基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。实施例:请参阅图1,一种基于二叉树的字符串表达式计算方法及装置,其方法如下:S1、获取输入字符串:例如“IPType==192.168.1.1ANDProType==TCP”;S2、解析字段类型:例如IP地址类型、IP协议类型;S3、解析操作符:例如==符号、AND符号;S4、获取字符前缀表达式;S5、将字符串装入二叉树中;S6、计算二叉树,获得表达式结果。上述方案通过java实现,具体步骤如下:(A)抽象自定义类型,定义抽象基类,包括如下接口:(a)获取该类型支持的操作符接口;(b)执行表达式接口;(c)判断是否为此类型字段;(B)定义操作符类型,定义操作符基类,包括如下接口:(a)计算两个值及操作符的执行结果,并返回;(b)判断是否为此类型操作符;(C)将字符串转换为二叉树,将字符串按(A)和(B)步骤解析后,判断出字符类型和操作符类型,根据前缀表达式得到二叉树:(a)碰到操作数则把其值赋给相应的新申请的二叉树结点,地址压栈;(b)碰到操作符则把其值赋给相应的新申请的二叉树,并从栈中弹出两个地址;(c)分别作为其左指针和右指针,然后再把其地址压栈,最后一个地址即为二叉树的根结点地址;(D)实现二叉树计算,递归实现每个二叉树子树的计算,假如已经为无子节点的节点,则调用操作符类对象的接口,实现当前二叉树子树的计算,完成所有二叉树计算后,得到当前整个二叉树的最终值,也就完成了表达式的计算。本专利技术通过二叉树计算的技术,解决纯文字字符串的表达式类型的语义判断问题。以上所述,仅为本专利技术较佳的具体实施方式,但本专利技术的保护范围并不局限于此,任何熟悉本
的技术人员在本专利技术揭露的技术范围内,根据本专利技术的技术方案及其改进构思加以等同替换或改变,都应涵盖在本专利技术的保护范围内。本文档来自技高网
...

【技术保护点】
1.一种基于二叉树的字符串表达式计算方法及装置,其特征在于,所述方法如下:S1、获取输入字符串;S2、解析字段类型;S3、解析操作符;S4、获取字符前缀表达式;S5、将字符串装入二叉树中;S6、计算二叉树,获得表达式结果。

【技术特征摘要】
1.一种基于二叉树的字符串表达式计算方法及装置,其特征在于,所述方法如下:S1、获取输入字符串;S2、解析字段类型;S3、解析操作符;S4、获取字符前缀表达式;S5、将字符串装入二叉树中;S6、计算二叉树,获得表达式结果。2.根据权利要求1所述的一种基于二叉树的字符串表达式计算方法及装置,其特征在于,上述方法通过java实现,具体步骤如下:(A)抽象自定义类型;(B)定义操作符类型;(C)将字符串转换为二叉树;(D)实现二叉树计算。3.根据权利要求2所述的一种基于二叉树的字符串表达式计算方法及装置,其特征在于,所述步骤(A)中,定义抽象基类,包括如下接口:(a)获取该类型支持的操作符接口;(b)执行表达式接口;(c)判断是否为此类型字段。4.根据权利要求2所述的一种基于二叉树的字符串表达式计算方法及装置,其特征在于,所述步骤(B)中,定义操作符基类,包括如下...

【专利技术属性】
技术研发人员:高峰王治华金明辉卢志洋邹兴兵薛斌
申请(专利权)人:国网上海市电力公司新华三技术有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1