标签:运算 pre 一个 ptree 后序 分享 计算 bin 实验
int GetHeight( BinTree BT )
{
定义LD,RD分别表示左子树高度和右子树高度
如果BT==NULL 返回0
否则递归调用该节点的左节点和右节点(后序遍历)
最后返回max{LD,RD}+1
}
void InitExpTree(BTree &T,string str)
{
建立op栈存运算符
op.push(‘#‘)
初始化根节点栈stacktree栈
while(str[i])
{
如果str[i]是操作数
生成一个只有根节点的子树T,stacktree.push(T)
如果str[i]是运算符{
switch(栈顶元素与str[i]的优先级)
大于:创建一个树节点T,数据为op.top
stacktree弹出两个节点T1,T2
T->lchild=T1,T->rlchild=T2
stacktree.push(T)
小于:op.push(str[i])
等于:op.pop()
}
}
while(op.top()!=‘#‘){
创建一个树节点T,数据为op.top
stacktree弹出两个节点T1,T2
T->lchild=T1,T->rlchild=T2
stacktree.push(T)
op.pop()
}
T=stacktree.top()
}
double EvaluateExTree(BTree T)
{
定义变量a,b
递归出口:(!T->lchild&&!T->rchild)
返回T->data-‘0‘
递归调用左右节点
a=EvaluateExTree(T->lchild)
b=EvaluateExTree(T->rchild)
判断操作符
进行相应计算
标签:运算 pre 一个 ptree 后序 分享 计算 bin 实验
原文地址:https://www.cnblogs.com/mayifang/p/8995770.html