zoukankan      html  css  js  c++  java
  • 二叉树与运算符

    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<<')';
    		}		
    	}
    }
    
  • 相关阅读:
    python Flask基础使用
    安装docker以及常规操作
    关于InfiniBand几个基本知识点解释
    RDMA技术解析
    C++学习之 类
    C++学习 内存模型和名称空间
    C++基础知识(3)
    C++基础知识(2)
    C++基础知识(1)
    Java基础知识
  • 原文地址:https://www.cnblogs.com/tgkx1054/p/2622294.html
Copyright © 2011-2022 走看看