| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1523 人关注过本帖
标题:用二叉树怎么可以实现表达式的计算 帮帮忙写下吧
只看楼主 加入收藏
中国
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2009-1-4
结帖率:90.91%
收藏
已结贴  问题点数:30 回复次数:16 
用二叉树怎么可以实现表达式的计算 帮帮忙写下吧
我只知道二叉树可以存数与把这些数字原封不动的输出来
但是怎么使得数字可以进行计算得出结果就不知道了
快想疯了
搜索更多相关主题的帖子: 二叉树 表达 
2009-07-21 21:13
中国
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2009-1-4
收藏
得分:0 
给个思路也好啊
2009-07-22 16:28
中国
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2009-1-4
收藏
得分:0 
有人吗?
2009-07-22 18:42
金多虾
Rank: 2
等 级:论坛游民
帖 子:153
专家分:99
注 册:2009-6-9
收藏
得分:15 
把问题说清楚一点!
2009-07-22 20:13
中国
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2009-1-4
收藏
得分:0 
回复 4楼 金多虾
给个例子
比如:3*5-2=?
我想用二叉树实现把此表达式存储并进行计算可以得出最后的结果?
2009-07-23 16:22
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:15 
后序遍历二叉树。
2009-07-26 13:51
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:0 
//////////////////////////////////////////////////
//Caculate2()公有成员函数
//递归:通过后序遍历表达式来计算当前表达式的值
//////////////////////////////////////////////////
double Expression::Caculate2(
                BinTreeNode<ExpNode>* subTree)
{
    if(subTree!=NULL)
    {
        if(subTree->data.etype==0)         //如果遍历到的是数据结点
            return subTree->data.info.data;
        else                               //如果遍历到的是运算符结点
        {
            char op=subTree->data.info.op; //获取运算符
            double x=Caculate2(subTree->leftChild);
            double y=Caculate2(subTree->rightChild);
            double res;
            switch(op)        //根据不同的运算符对弹出的数据进行计算
            {                 //左右括号因为是不需运算符的运算符,所以无需列在此处
                case '+':
                    res=x+y;break;
                case '-':
                    res=x-y;break;
                case '*':
                    res=x*y;break;
                case '/':
                    res=x/y;break;
                case '^':
                    res=pow(x,y);
                    break;
                case '%':
                    res=int(x)%int(y);
                    break;
            };
            return res;
        };
    }
    else
        return 0;
};
///////////////////////////////Caculate2()函数结束
2009-07-28 09:04
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:0 
以上是通过后序递归遍历二叉树来计算表达式的值,
我写的代码,你可以参考。

关于表达式二叉树,我可以给你个实现建议,就是
每个结点的数据域你可以定义成union类型加一个
标志变量type,type=1,是该union类型存放运算符,
type=0时,存放数据,个人意见,仅供参考。

[[it] 本帖最后由 geninsf009 于 2009-7-28 09:07 编辑 [/it]]
2009-07-28 09:05
中国
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2009-1-4
收藏
得分:0 
回复 7楼 geninsf009
res=pow(x,y);中的pow函数是什么?
return subTree->data.info.data;这个info域可以不要吧。
我看看书去。
2009-07-28 22:10
中国
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2009-1-4
收藏
得分:0 
union是什么类型啊
2009-07-28 22:11
快速回复:用二叉树怎么可以实现表达式的计算 帮帮忙写下吧
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044946 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved