• 二叉树与运算符


    1)二叉树仅含二元运算符,存储在二叉树BT中,写出计算该算术表达式的值的算法。

    #include "stdafx.h"
    #include<iostream>
    using namespace std;
    typedef struct BTreeNode
    {
    	float data;
    	char optr;
    	struct BTreeNode *lchild,*rchild;
    }BiNode,*BTree;
    int _tmain(int argc, _TCHAR* argv[])
    {
    	return 0;
    }
    float PostEval(BTree bt)//后序遍历
    {
    	float lv,rv;//左右表达式的值;
    	float value;//最终值
    	if(bt)
    	{
    		lv=PostEval(bt->lchild);
    		rv=PostEval(bt->rchild);
    		switch(bt->optr)
    		{
    		case '+':value=lv+rv;break;
    		case '-':value=lv-rv;break;
    		case '*':value=lv*rv;break;
    		case '/':value=lv/rv;break;
    		}
    	}
    	return value;
    }
    

     2)给出算法将二叉树表示的表达式二叉树按中缀表达式输出,并加上相应的括号

    #include "stdafx.h"
    #include<iostream>
    using namespace std;
    typedef struct BTreeNode
    {
    	float data;
    	char optr;
    	struct BTreeNode *lchild,*rchild;
    }BTree;
    int _tmain(int argc, _TCHAR* argv[])
    {
    	return 0;
    }
    int Precede(char optr1,char optr2)//比较运算符级别高低,optr1高于optr2时返回1,相等时返回0,低于时返回-1
    {
    	switch(optr1)
    	{
    	case '+':case'-':if(optr1=='+'||optr2=='-')return 0;else return -1;
        case '*':case'/':if(optr1=='*'||optr2=='/')return 0;else return 1;
    	}
    }
    void InorderExp(BTree *bt)//输出二叉树的表达式
    {
    	float lv,rv;//左右表达式的值;
    	float value;//最终值
    	int bracket;
    	if(bt)
    	{
    		if(bt->lchild)
    		{
    			bracket=Precede(bt->data,bt->lchild->data);//比较双亲与左子女运算符优先级
    			if(bracket==1)cout<<'(';
    			InorderExp(bt->lchild);//输出左子女的算术表达式
    			if(bracket==1)cout<<')';
    		}
    		cout<<bt->data;//输出根结点
    		if(bt->rchild)
    		{
    			bracket=Precede(bt->data,bt->rchild->data);//比较双亲与右子女运算符优先级
    			if(bracket==1)cout<<'(';
    			InorderExp(bt->rchild);//输出右子女的算术表达式
    			if(bracket==1)cout<<')';
    		}		
    	}
    }
    
  • 相关阅读:
    jquery ajax get 数组参数
    xcopy中文文件名,中文件目录乱码问题
    小程序使用wxParse插件解析html标签图片间距问题
    30分钟彻底弄懂flex布局
    abp ueditor 多图以及文件无法上传
    Lubuntu 18.04 自动登录
    树莓派虚拟环境手动安装HA
    ESP-01S刷ESPEasy固件,接入HA
    百度TTS的来由
    Pi 3B+编译安装python3.6.8
  • 原文地址:https://www.cnblogs.com/tgkx1054/p/2622294.html
Copyright © 2020-2023  润新知