6
A
回答
0
将表达式转换为前缀或后缀表示法。从那里它应该是非常简单的。算法在以下wiki链接中提到。
2
你将需要:
- 定义描述语言
- 写一个词法分析器,从您的字符串
- 写入读取的标记语法从令牌构建树的解析器
例如,看看这个方法:http://en.wikipedia.org/wiki/Recursive_descent_parser
还有其他
+2
对于什么是一个相当简单的任务来直观地显示表达式的解析方式,这可能是矫枉过正的。 – 2012-12-18 00:40:13
9
转换缀以后缀或前缀
后缀输入为:AB + CDE + **
- 考虑第一个字符,如果它不是符号然后创建节点将它添加到堆栈
- 如果字符cter是符号,然后使用符号弹出元素创建节点并将其添加到符号的左侧和右侧
- 将符号节点插入到堆栈中。
- 重复1,2和3,直到迭代器有没有更多的元素
Java实现
public Tree.TreeNode createExpressionTree(){
Iterator<Character>itr = postOrder.iterator();
Tree tree = new Tree();
NodeStack nodeStack = new NodeStack();
Tree.TreeNode node;
while (itr.hasNext()) {
Character c = itr.next();
if(!isDigit(c)){
node = tree.createNode(c);
node.right = nodeStack.pop();
node.left = nodeStack.pop();
nodeStack.push(node);
}else{
node = tree.creteNode(c);
nodeStack.push(node);
}
}
node = nodeStack.pop();
return node;
}
+1
这里符号=运算符 – 2015-06-11 05:03:05
0
它可以分为两个步骤:
计算每个令牌的优先级值。
例如: '+':1, 'X' 2,数:INF, '(':添加10至基部, ')':从基部减去10)的基础上
生成Cartesian tree优先使用堆栈(约5行代码)
您可以在一次扫描中完成。
相关问题
- 1. “In”操作的表达式树二进制表达式
- 2. 如何从前缀表示法构建二进制表达式树?
- 3. 构建表达式树
- 4. 构建表达式树
- 5. Java二进制表达式树 - 检查表达式中的括号
- 6. 二进制树的创建
- 7. 构建预订,后序和有序表达式的二叉树
- 8. 干净的方法来简化二进制表达式树
- 9. 减少二进制表达式树的括号数
- 10. 如何在Java中实现二进制表达式树?
- 11. 表达二进制
- 12. 动态构建表达式树
- 13. 二进制表示树
- 14. 用表达式树构建lambda表达式
- 15. 我必须创建一个二进制表达式树,它将表达式2 + 4 - 3存储在java中
- 16. 表达式树构造?
- 17. Perl二进制/ PCAP正则表达式
- 18. 二进制搜索树解构器
- 19. 源构建vs二进制构建?
- 20. Lambda参数不在范围内 - 构建二进制lambda表达式时
- 21. 创建类型二进制表达式编程
- 22. 二进制搜索树内的二进制搜索树
- 23. 为什么O(N日志N)构建二进制搜索树?
- 24. 二进制搜索树的高度,而不构建它
- 25. 编码的二进制树结构JSON格式
- 26. 数学表达式的二叉树
- 27. 使用集合和二叉搜索树解析和构建S-表达式
- 28. 在文件中表示二进制树
- 29. 表达式树
- 30. 通过二叉树结构实现的二进制堆
您可以使用分流码算法实现解决方案。以下是关于wikipiedia的一些详细信息:。这个算法是Edsger Dijkstra发明的,它是一个非常好的选择。如果您需要一些细节,我可以发布一段代码示例,我之前在C#中编写过,但我想维基百科链接绰绰有余。 –
2015-07-13 10:16:30