• 二叉树与运算符


    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<<')';
    		}		
    	}
    }
    
  • 相关阅读:
    DNN单击事件只有在"编辑"状态下才有效的解决方案
    Ioc容器应用浅析
    想要别人改变,你要先以身作则
    SQL 常用函数
    营造自己的室外桃园
    My first blog from word 2007
    My First Blog from Windows live writer.
    Xilinx zynq7000 Software development kit User guide
    F5和CTRL+F5的区别
    grep 搜索字符串命令
  • 原文地址:https://www.cnblogs.com/tgkx1054/p/2622294.html
Copyright © 2020-2023  润新知