永发信息网

前缀表达式怎么转化为二叉树

答案:2  悬赏:40  手机版
解决时间 2021-02-10 12:56
  • 提问者网友:练爱
  • 2021-02-09 20:56
前缀表达式怎么转化为二叉树
最佳答案
  • 五星知识达人网友:零点过十分
  • 2021-02-09 22:21
先把后序式转为中序式,比如 后序:adc*+de/- 中序:a+b*c-d/e 再写前序式:+a-*cbed 需要主意的是前序式是从右往左写,而且要先把结果写进一个栈,写完后再把栈读出来就是前序式了。
全部回答
  • 1楼网友:执傲
  • 2021-02-09 23:26
(1)表达式的三种形式: 中缀表达式:运算符放在两个运算对象中间,如:(2+1)*3; 后缀表达式:不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:2 1 + 3 *; 前缀表达式:同后缀表达式一样,不包含括号,运算符放在两个运算对象的前面,如:* + 2 1 3。 (2)表达式的计算: 由于后缀表达式中没有括号,不需判别优先级,计算严格从左向右进行,故计算一个后缀表达式要比计算机一个中缀表达式简单得多。 将中缀表达式转换为后缀表达式的算法思想: ·当读到数字直接送至输出队列中 ·当读到运算符t时, a.将栈中所有优先级高于或等于t的运算符弹出,送到输出队列中; b.t进栈 ·读到左括号时总是将它压入栈中 ·读到右括号时,将靠近栈顶的第一个左括号上面的运算符全部依次弹出,送至输出队列后,再丢弃左括号。 运用后缀表达式进行计算的具体做法: ·建立一个栈s ·从左到右读后缀表达式,读到数字就将它转换为数值压入栈s中,读到运算符则从栈中依次弹出两个数分别到y和x,然后以“x 运算符 y”的形式计算机出结果,再压加栈s中 ·如果后缀表达式未读完,就重复上面过程,最后输出栈顶的数值则为结束
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯