/* 简单中序算术表达式转为二叉树, 至于转成了二叉树, 前中后遍历就随意了
1. 将表达式转为后缀表达式, 然后转为二叉树, 或者用2步骤.
2. 理论上来讲, 一个中缀表达式是不能够转换出一个唯一的二叉树的,
但是中缀算术表达式因为有运算符的优先级关系, 建立二叉树时, 需要所有的操作数
都在叶子节点上, 所有的操作符都在父(根)节点上, 这个特征可以生成一个唯一的二叉树
3. 原理: 每次找到最后计算的运算符, 然后去递归处理, 因为'*'和'/'的运算符优先级高于
'+', '-', 这样我们找运算符是应该优先选择'+','-',然后再考虑'*', '/'.
至于括号, 去掉对括号内的内容作同样的递归分析即可, 中序遍历的时候注意将括号恢复.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _tBINARY_TREE_
{
int value;
_tBINARY_TREE_ *lchild;
_tBINARY_TREE_ *rchild;
}tBINARY_TREE;
static int find_split(const char *express, int start, int end)
{
int tag = -1;
if (express[start] == '(' && express[end] == ')')
{
++start;
--end;
}
int is_in_braket = 0;
int more_grade = 0;
for (int i = start; i <=
简单中序算术表达式直接建立二叉树测试
最新推荐文章于 2023-12-01 21:42:33 发布