/*
Copyright (c)2016,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:第十一周项目1 - 二叉树算法验证.cpp
作 者:滕健
完成日期:2016年11月10日
问题描述: 用二叉树来表示代数表达式,树的每一个分支节点代表一个运算符,每一个叶子节点代表一个运算数(为简化,只支持二目运算的+、-、*、/,不加括号,
运算数也只是一位的数字字符。本项目只考虑输入合乎以上规则的情况)。请设计算法,
(1)根据形如“1+2?3?4/5”的字符串代表的表达式,构造出对应的二叉树(如图),
用后序遍历的思路计算表达式的值时,能体现出先乘除后加减的规则;
(2)对构造出的二叉树,计算出表达式的值。
输入描述: 若干测试数据。
程序输出: 代数表达式,对应二叉树,表达式的值。
*/
#include <stdio.h>
#include <malloc.h>
#include<string.h>
#include <stdlib.h>
#define MaxSize 100
typedef char ElemType;
typedef struct node
{
ElemType data; //数据元素
struct node *lchild; //指向左孩子
struct node *rchild; //指向右孩子
} BTNode;
void CreateBTNode(BTNode *&b,char *str); //由str串创建二叉链
BTNode *FindNode(BTNode *b,ElemType x); //返回data域为x的节点指针
BTNode *LchildNode(BTNode *p); //返回*p节点的左孩子节点指针
BTNode *RchildNode(BTNode *p); //返回*p节点的右孩子节点指针
int BTNodeDepth(BTNode *b); //求二叉树b的深度
void DispBTNode(BTNode *b); //以括号表示法输出二叉树
void DestroyBTNode(BTNode *&b); //销毁二叉树
void CreateBTNode(BTNode *&b,char *str) //由str串创建二叉链
{
BTNode *S
第十一周项目2 - 用二叉树求解代数表达式
最新推荐文章于 2022-11-27 11:15:31 发布