Visio-公式配置--二叉树.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Visio-公式配置--二叉树

: Author:Wilson e-Mail:wilsonwong@126.com QQ:106365089 QQ 自动义公式方案简介:本方案主要利用二叉树设计自定义公式运算,其运算可为常用的数学公式、逻辑运 算和自定义函数,每一个公式的定义同时可以作为其他自定义公式的引用,本方案可用在KPI考核、工程 计算等方面,可以一个相对独立辅助工具实现,并可为其他系统提供编程接口。 问题需求: 客户通过工具构造任意复杂的计算公式,计算公式中的变量取自预先定义的公式表。公式表通过唯一性ID检索到所对应的 公式表达式。表达式可以为常量,或者另一个公式,或者函数调用格式。 公式计算如果成功,则返回计算的数值结果(如果结果为布尔型,可取以下值:true,false,0,非0数字),如果计算出错 则返回“err:错误描述”。 计算公式包含条件判断式类型:如 IF(条件,真值表达式,假值表达式). 解决方案: 二叉树和公式的对应关系如图所示,通过遍历二叉树可得到公式的表达式或计算公式的值。 二叉树是改造过的,除了左右两个结点外,还有一个结点用于IF表达式时的条件指针,条件指针指向另一个公式表达式。 二叉树结点分为两大类,一类是运算符,另一类为表达式。运算符分为两类,一类是算术运算符 (+,-,*,/,,=,,=, ,!=),运 算操作数为左右两个结点的值;另一类是IF符号,IF结点通过条件指针(Condition)所指向表达式计算返回的值判断是否为真,如 果为真结点值取左结点,否则取右结点。如果结点不是IF结点,条件指针(Condition)忽略。 结点的值计算: 1、结点为叶子结点,如果结点为可直接计算的表达式(如常量、外部非内嵌公式函数调用{如果函数体内含有公式, 则先计算公式值,然后代入在计算函数值})则直接计算结点值,如果结点为公式ID,则从公式表读取公式表达式并计算该公式值作 为本结点的值。 2、结点为非叶子结点情况,结点的值由左结点的值和右结点的值通过本结点的运算符运算所得。如果本结点运算符为 数学运算符(+,-,*,/等),结点值为数字类型值;如果本结点运算符为逻辑运算符(,=,,=, ,!=,and or),则返回值为真假 值(true,false);如果结点为IF表达式,则根据Condition指针所指向表达式的值(真假),判断取本结点的左值还是右值,如果 为真取左值,为假取右值。 结点图形显示坐标设定算法思想(所有坐标均指图形模块的中心坐标): 1、定5个参数:根结点坐标(xRoot,yRoot),结点宽度高度(nNodeWidth,nNodeHeight) 最大深度叶子结点之间的距离(nLeafHSpace) 行距系数(fCoefficient) 相邻两层结点的基准行距(nLineVSpace),每行行距不等,最大深度行距最小,最小深度行距最 大,根结点深度为1,计算方法(行距=基准行距 * Pow(行距系数,(二叉树最大深度-当前结点深度))。 2、计算3个值:二叉树最大深度(nMaxDepth),当前结点深度(nCurDepth),完全二叉树结构以当前结点为中轴偏左 叶子结点个数(nLeftLeafs) 3、二叉树绘图区域左上角坐标计算: 完全二叉树叶子结点个数:nLeafs = Pow(2,nMaxDepth-1) x0 = xRoot - ((nNodeWidth+nLeafHSpace) * nLeafs + nLeafHSpace)/2 y0 = yRoot - nLineVSpace ; 3、计算结点坐标: 二叉树绘图区域左上角坐标计算: q = 1.3 ; //等比系数 x =

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档