二叉树求表达式的值Word下载.docx
- 文档编号:18825915
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:8
- 大小:20.61KB
二叉树求表达式的值Word下载.docx
《二叉树求表达式的值Word下载.docx》由会员分享,可在线阅读,更多相关《二叉树求表达式的值Word下载.docx(8页珍藏版)》请在冰豆网上搜索。
2
实验报告
(一)部分算法流程图
1先序创建二叉树表达式
(五)程序清单
#include<
stdio.h>
stdlib.h>
#includevstring.h>
#definelen20
#defineNULL0structtree
{
chardata[len];
tree*lchild,*rchild;
};
voidcreatetree(tree*&
tre)//创建二叉树
charch[len];
scanf(”%s"
ch);
getchar();
if(strcmp(ch,"
#"
)==0)tre=NULL;
else
tre=(tree*)malloc(sizeof(tree));
strcpy(tre->
data,ch);
createtree(tre->
lchild);
createtree(tre->
rchild);
}
}voidinputtree(tree*tre)//输出二叉树{
if(tre!
=NULL)
printf("
%s"
tre->
data);
NULL)
if(tre->
lchild!
=NULL||tre->
rchild!
printf("
("
);
inputtree(tre->
Ichild);
if(tre->
rchiId!
=NULL)printf("
"
inputtree(tre->
rchiId);
)"
}voidtraversetree(tree*tre)//后续遍历{
=NULL)
traversetree(tre->
rchild);
printf("
tre->
}voidinordertravers(tree*tre)//中续遍历
}doublesolution(tree*tre)//二叉树表达式求值
if(tre->
lchild==NULL&
&
tre->
rchild==NULL&
tre->
data[O]>
='
O'
&
tre->
data[0]<
9'
)
returnatof(tre->
else
switch(tre->
data[0])
>
rchild);
rchild);
->
rchild);
case'
*'
:
returnsolution(tre->
lchild)*solution(tre-case'
-'
:
returnsolution(tre->
lchild)-solution(tre-case'
+'
returnsolution(tre->
lchild)+solution(trecase'
/'
returnsolution(tre->
lchild)/solution(tre->
rchild);
intmain()
tree*tre;
doublesum;
intch;
do
rintf("
选择下面功能
…n"
1.先序创建二叉数表达式
n"
rintf("
2.后序遍利二叉数表达式
3.求二叉数表达式的数值
4.中序遍利二叉数表达式
5.退出二叉数
n"
…n"
P
scanf("
%d"
,&
ch);
switch(ch)
case1:
printf(”输入创建的二叉树:
n"
);
getchar();
createtree(tre);
inputtree(tre);
printf("
);
break;
case2:
后序遍历的二叉树:
traversetree(tre);
printf("
n”);
break;
case3:
sum=solution(tre);
printf("
二叉树表达式的值为=%fn"
sum);
case4:
中序遍历的二叉树:
inordertravers(tre);
printf(”n"
case5:
break;
}while(ch!
=5);
return0;
(六)实验结果
1.先序创建二叉数表达式
输入创建的二叉树:
+
89
#
/
66
3
#+(*(-(99,89),2),/(66,3))
选择下面功能•
1.
先
序
创
建二叉
数
表
达
式
2.
后
遍
利二叉
3.
求
-二二
叉
数表达
的
值
4.
中
5.退
岀:
二叉数
9989-2*663/+
选择下面功能
■二二
4
9989-2*+663/
1.先序创建二叉数表达式
二叉树表达式的值为=42.000000
5
请按任意键继续
(7)实验遇到的问题
二叉树的递归创建只能先序创建吗?
若采用中序或后序创建,必须先输入左子树,我
们所定义二叉树往电脑输入时,必须有终止条件,比如if(strcmp(ch,"
)==0)tre=NULL;
所以,
一颗二叉树中序或后序建立时,必先输入左子树,而左子树是终止条件,所以,无法建立一颗二叉树。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 表达式