永发信息网

如何将将算术表达式转化成二叉树

答案:1  悬赏:30  手机版
解决时间 2021-11-11 18:54
如何将将算术表达式转化成二叉树
最佳答案
将操作数作为二叉树的叶子结点,操作符作为二叉树的非叶子结点

先序遍历则得到前缀式

中序遍历则得到中缀式

后序遍历则得到后缀式

//以(a+b)/c-d+e*f进行演示

+
(- *)
(/ d) (e f)
(+ c)
(a b)

#include
#include

typedef char Elem;

typedef struct Node
{
Elem data;
struct Node *pLchild;
struct Node *pRchild;
}BTreeNode, *BTree;

BTree CreateBTree(BTree T, Elem *str)//创建二叉树
{
static int i = 0;

if ('0' == str[i])
{
T = NULL;
}
else
{
T = (BTree) malloc (sizeof(BTreeNode));
T->data = str[i++];

T->pLchild = CreateBTree(T->pLchild, str);
i++;
T->pRchild = CreateBTree(T->pRchild, str);
}

return T;
}

void PostTraverseBTree(BTree T)//后序
{
if (NULL != T)
{
PostTraverseBTree(T->pLchild);
PostTraverseBTree(T->pRchild);
printf("%c ", T->data);
}
}

void InTraverseBTree(BTree T)//中序
{
if (NULL != T)
{
InTraverseBTree(T->pLchild);
printf("%c ", T->data);
InTraverseBTree(T->pRchild);
}
}

void PreTraverseBTree(BTree T)//前序
{
if (NULL != T)
{
printf("%c ", T->data);
PreTraverseBTree(T->pLchild);
PreTraverseBTree(T->pRchild);
}
}

int main(void)
{
BTree T = NULL;

Elem str[] = "+-/+a00b00c00d00*e00f00";

T = CreateBTree(T, str);
printf("\n\n");

printf("先序遍历(前缀式):\n");
PreTraverseBTree(T);
printf("\n\n");

printf("中序遍历(中缀式):\n");
InTraverseBTree(T);
printf("\n\n");

printf("后序遍历(后缀式):\n");
PostTraverseBTree(T);
printf("\n\n");
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
春风送暖边彊绿,时雨润花兰花香是什么对联或
胚胎722是什么级别
在单位没什么事,我教大家折纸盒子吧.可以放
现在苹果几是8.3系统的
annehappy奇摩西唱的歌名叫什么?
EXCEL中怎么汇总呀,急求大师,谢谢
请问36厘米×24厘米的照片相当于多少寸?
咸阳农村户口养老制度
跪求 报帝恩 我本是仙
在新网买空间哪种性价比最高?
简便计算99x103
5g就要来了 万物互联的时代还会远吗
生姜贴真的能通神阙穴么?
火车t101终点站属于那个区?
腹部有包块
推荐资讯
什么样的纹身霸气小纹身
气球上能用丙烯颜料画画吗?
名著《三国演义》中,孙策在留给孙权的遗言中
王者荣耀项羽怎么升技能
我怕狗和蛇500字作文
我的论文是不是要悲剧了
请问雪佛兰车费油吗?日车省油就是好吗?
电视剧少帅怎么拼音写出来
童星小主持伯利兹英语地址在什么地方,我要处
有一个人头长在屁股下面,这样的人叫什么人?
请教(QAD Ultra-Rest起落箭台)
MJ的《speechless》的歌词的原文和中文翻译
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?