[算法学习]后缀表达式转二叉树
来源:互联网 发布:qsv格式转换器mac版 编辑:程序博客网 时间:2024/05/17 22:58
问题描述: 输入后缀表达式,输出后缀表达式的二叉树。
解法与分析:
1. 根据后缀表达式的特点,我们可以知道,只要是运算符的就都是根结点。
2. 我们这里需要使用一个栈来保存字符。遍历后缀表达式,每当遇到是非运算符的字符,就将它入栈,当遇到是运算符,就将栈中前两个结点出栈,和运算符组成一棵子树,然后入栈。遍历完成后,栈中剩下的唯一的一个结点就是该后缀表达式的二叉树的根结点。
参考代码如下
/** * 后缀表达式转二叉表达式树 * @param suffixStr */public static void suffixExpression2Tree(String suffixStr){ if(isEmpty(suffixStr)) return; char[] chs=suffixStr.toCharArray(); // 用于临时存储节点的栈 Stack<TreeNode> stack=new Stack<TreeNode>(); // 遍历所有字符,不是运算符的入栈,是运算符的,将栈中两个节点取出,合成一颗树然后入栈 for(int i=0;i<chs.length;i++) { if(isOperator(chs[i])) { if(stack.isEmpty()||stack.size()<2) { System.err.println("输入的后缀表达式不正确"); return; } TreeNode root=new TreeNode(chs[i]); root.left=stack.pop(); root.right=stack.pop(); stack.push(root); } else { stack.push(new TreeNode(chs[i])); } } if(stack.isEmpty()||stack.size()>1) { System.err.println("输入的后缀表达式不正确"); return; } stack.pop().printAll();}
- 附:源码地址
0 0
- [算法学习]后缀表达式转二叉树
- 二叉树 计算后缀表达式
- 后缀表达式与二叉树
- 后缀表达式 遍历二叉树
- 中缀表达式转后缀,并打印二叉树
- 前缀、中缀、后缀表达式和二叉树
- 【后缀表达式+二叉树+层次遍历】HDU1805Expressions
- 二叉树实现运算符优先级算法,支持表达式前缀,中缀,后缀,层次,广义表输出
- 栈应用:中缀表达式转后缀表达式并以二叉树储存
- 二叉树——HDU 1805 后缀表达式转前缀表达式
- 【数据结构学习】中缀表达式转后缀表达式
- 二叉树应用——后缀表达式构建表达式树
- 二叉树中缀表达式到后缀表达式的转换
- 求解算术表达式结合二叉树的后缀表达式问题
- 二叉树与表达式(前缀,中缀,后缀表达式)
- 【数据结构】中缀表达式构造二叉树转换成后缀表达式
- 关于中缀转后缀表达式的树型算法
- 表达式树---后缀表达式转中缀表达式
- POJ 1365 Prime Land(接收数据)
- WindowManager service
- GDB watch if var !=value
- POJ-3292-Semi-prime H-numbers-数筛法
- Could not find a storyboard named 'Main' in bundle NSBundle
- [算法学习]后缀表达式转二叉树
- 字符编码的历史演变
- 7.Tachyon命令行使用
- 微信APP支付填坑记
- 51nod 1487:占领资源 很好玩很痛苦
- 点击<a>标签,禁止页面自动跳到顶部的解决办法
- [算法学习]树的广度遍历
- POJ 1860 Currency Exchange(bellman变形)
- PHP之mongodb学习