SOS!!!建树难题!!困扰好几天了,帮忙解决者,给500分!

microibm 2005-05-25 03:49:27
我要根据用户的输入情况,建立一棵二叉树,用户可选择输入的操作符有: and, or, xor, not, "(", ")"等
其中and, or, xor优先级相同, not优先级高,

由于用户输入的情况非常复杂, 下面我根据自己的想象列出了以下29种情况; 请问该如何建立二叉树啊??? 有没有什么现成的原码处理这样的情况的!

(说明1:建树时, 等到的表达时的顺序为自然顺序(各原子条件和操作符是按照表达式的自然顺序一个个读取,再来建树的,就是说如果表达式为 (not A) and B, 那么建树过程中, 读取的顺序就是:
"(", "not", "A", ")", "and", "B" ---一边读,一边建树)
(说明2: not操作符是这样的, 它只有右child, 无左child; 例如: not A, 那么树是这样的: 根为not, 一个右child是A)
(说明3: 以下A,B, C,D,E等具体意义可以不管, 就当是原子条件好了)
(说明4: 左右括号在树上不用表现出来, 如(not A) and B, 那么树应该如下的样子:
and
/ \
not B
\
A


1. A and B or C
2. A and B or C xor D
3. A and ( B or C)
4. (A or B) and C
5. (A and B) or ( C xor D)
6. A and ( B or ( C xor D))
7. ((A and B) or C) xor D
8. (A and (B or C)) xor D
9. not A
10. A
11. A and B
12. (not A) and B
13. (not A)
14. not (A and B)
15. A and (not B)
16. A and ( not (B or C))
17. A and ((B or C) xor D)
18. A and (((B or C) xor D) and E)
19. (((A and B) or C) xor D) and E
20. not A and B
21. not not A
22. not not not A and B or C
23. not (not A) and B or C
24. (not A and not B) or C
25. ((not A) or (not B)) xor C
26. (not (A and B) or C) xor (not D and not not E)
27. not A and ((not B) or C) xor D
28. not (not ((not A) and B) or not C) xor D
29. A and B or not not not not C xor not (not D) or E
...全文
144 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rushinger 2005-06-03
  • 打赏
  • 举报
回复
其他网友想要此算法源码可发邮件到rushinger@163.com,标题注明“逻辑运算表达式构造二叉树”即可。
rushinger 2005-05-30
  • 打赏
  • 举报
回复
基本完成,楼主所列29种情况都可以处理
rushinger 2005-05-27
  • 打赏
  • 举报
回复
楼主问得够辛苦的,我就动一下手吧
luolovegui 2005-05-25
  • 打赏
  • 举报
回复
另外,非常同意 opentuxedo(开缝的燕尾服) 的说法,用逆波兰式不错,为了你的方便,我建议你在处理之前换一下字符串,

or => |
and => &
not => !

这样就方便多了。
luolovegui 2005-05-25
  • 打赏
  • 举报
回复
前两天你不是问了吗,还没有搞定啊。

你可以看看编译原理,不是很难的。
opentuxedo 2005-05-25
  • 打赏
  • 举报
回复
用二叉树来描述正好呀?好象看你的描述没什么问题呀?
你是要根据你所列出的29种表达式来建立这个树吗?先用逆波兰式把用户输入的表达式重新写一遍,然后基本上就已经是一个二叉树结构了。
经常使用电脑可能也遇到过了! 突然‘咚’的一声 提示 内存不能为read 这个问题我以前也遇到过不知道怎么解决 现在终于有办法了!呵呵! 我们就看看是什么原因引起的吧,另外附送一个小工具修复见下面附件 总结下大概以下9个原因 1、驱动不稳定,与系统不兼容,这最容易出现内存不能为 Read 或者文件保护(主要原因) 2、系统安装了一个或者多个流氓软件,这出现 IE 或者系统崩溃的机会也比较大,也有可能出现文件保护 3、系统加载的程序或者系统正在运行的程序之前有冲突,尤其是部杀毒软件监控程序 4、系统本身存在漏洞,导致容易受到网络攻击。 5、病毒问题也是主要导致内存不能为 Read、文件保护、Explorer.exe 错误…… 6、如果在玩游戏时候出现内存不能为 Read,则很大可能是显卡驱动不适合(这里的不适合有不适合该游戏、不适合电脑的显卡)也有可能是 系统版本不够新或者不符合该游戏、显卡驱动 7、部软件本身自身不足的问题 8、电脑硬件过热,也是导致内存不能为 Read 的原因之一。 9、电脑内存与主板兼容性不好也是导致内存不能为 Read 的致命原因! 以上大概就是目前可以引起系统提示 内存不能为read的原因了 另外软件是针对只是针对部原因引起的内存不为read所做修复,不是100%有效,大家可以试试看 说下原理: 就是批处理使用 regsvr32命令 将动态链接库文件重新注册 (system32下的所有 .dll 和 .ocx 文件;) 注意:由于修复工具会重新注册 system32下的所有 .dll 和 .ocx 文件 此操作对杀毒软件来说属于敏感操作,所以建议使用修复工具的时候,请禁用杀毒软件,以免部杀毒误报!jie

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧