2 xmp1669217327 xmp1669217327 于 2017.01.04 16:33 提问

Java-以后缀表达式构造表达式二叉树

做Java课设,题目是以后缀表达式构造表达式二叉树,有没有知道怎么直接实现的?
我自己是想先将后缀表达式转化为中缀表达式,然后以中根后根构造二叉树。但是不知道该怎么将后缀表达式转换成中缀表达式,求解,知道如何直接做或者如何将后缀转化成中缀都可以

1个回答

oyljerry
oyljerry   Ds   Rxr 2017.01.05 21:26
已采纳
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
二叉树应用——后缀表达式构建表达式树
针对前一篇博文后缀表达式求值、中缀表达式到后缀表达式的转换,已经可以实现中缀表达式到后缀表达式的转换,这里再介绍根据后缀表达式构建表达式树,那我们就能够从这两种常用类型的输入表达式(中缀和后缀)生成表达式树。
[算法学习]后缀表达式转二叉树
问题描述: 输入后缀表达式,输出后缀表达式的二叉树。 解法与分析: 1. 根据后缀表达式的特点,我们可以知道,只要是运算符的就都是根结点。 2. 我们这里需要使用一个栈来保存字符。遍历后缀表达式,每当遇到是非运算符的字符,就将它入栈,当遇到是运算符,就将栈中前两个结点出栈,和运算符组成一棵子树,然后入栈。遍历完成后,栈中剩下的唯一的一个结点就是该后缀表达式的二叉树的根结点。
栈应用:中缀表达式转后缀表达式并以二叉树储存
中缀表达式就是我们平时所看到的一般计算表达式,如: ①最简单的: 1 + 1 ②稍微复杂一点的: 8 – ( 3 + 2 * 6 ) / 5 + 4而后缀表达式(也被称为逆波兰式)则是将运算符放在了最后,两个操作数放在前面,以及不需要括号表示运算的优先级, 如: ①1 + 1 对应的就是 1 1 + ②8 – ( 3 + 2 * 6 ) / 5 + 4 对应的就是 8 3 2 6
后缀表达式建立二叉树并遍历测试
/* 后缀表达式建立二叉树并遍历测试 * 原理: 扫描后缀表达式,遇到操作数时即建立单二叉树节点, 左右指针都为空,放入栈中, 遇到 操作符时也建立单二叉树节点, 但是节点的左右指针需要取栈顶元素,即此时依次从栈顶 出栈的元素分别作为当前扫描节点的右,左子树(注意顺序), 之后也将该节点进栈, 循环 该步骤直到后缀表达式结尾, 此时栈顶元素即为建立好的二叉树的根节点.
算法学习 - 表达树的建立(后缀表达式法),树的先序遍历,中序遍历,后序遍历(非递归)
表达树就是根据后缀表达式来建立一个二叉树。 这个二叉树的每个叶子节点就是数,真祖先都是操作符。 通过栈来建立的,所以这里也会有很多栈的操作。 树的先序遍历,中序遍历,后序遍历的概念我就不讲了,不会的自行百度,不然也看不懂我的代码。 下面是代码: // // main.cpp // expressionTree // // Created by Alps on 14-7-29. //
把后缀表达式转换为表达式树
//简单起见,每个运算数节点存储的为小写英文字母 #include #include #include struct BinTreeNode{ char Element; struct BinTreeNode* Left; struct BinTreeNode* Right; }; struct BinTreeNode* CreateNode(char ch) {
从后缀表达式建立表达式树
怎么想起总结算法了 在一个公司呆久了,不出去看看,你永远不知道你的水平如何,你值多少钱。也就是说,作为一个技术人员,应该每隔4、5个月,出去参加几次面试,看看自己的技术水平有没有和IT圈脱节。但更多的是在寻找更好的机会,找一份更适合自己,待遇更高的工作。 好了,从今天起,每天都总结一个小的数据结构与算法知识,一来扩充自己的知识;二来你懂的。 二叉树的遍历 对于二叉树无非就三种遍历
中缀表达式生成二叉树并利用后缀表达式进行求值运算
这次是某人给的题目,题目不难,但是很复杂
二叉树与表达式(前缀,中缀,后缀表达式)
表达式简介
《数据结构实战》将后缀表达式变成表达式树------二叉树的应用
编译原理中对于表达式的管理,前面已经有如何将中缀表达式转为后缀表达式算法了,原理同计算后缀表达式同理,为简单起见,操作符都是简单的二元表达式操作符。因此遇到操作数就形成一个叶子节点,并压栈,遇到操作符,则从栈中取两个节点,形成一颗新的树,并进行压栈。最后从栈中取出的为最终的表达式树。 代码如下: