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