数据结构怎么还原中序表达式的二叉树
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 14:11:00
数据结构怎么还原中序表达式的二叉树
a+b*c-d-e/f 为中序表达式,如题,应该有什么规则,请详细一点,最好有步骤图,
上面的问题已解决.如果只知道后缀表达式可以还原二叉树吗
a+b*c-d-e/f 为中序表达式,如题,应该有什么规则,请详细一点,最好有步骤图,
上面的问题已解决.如果只知道后缀表达式可以还原二叉树吗
根据后缀表达式构造相应的二叉树的算法可如下(先假定‘-’只作为减号运算符,而不存在一元运算的‘-’).
(1)初始化一个空栈s;
(2)从表达式中读入一个字符到ch;
(3)如果ch为字符串结束符,则转到(7);
(4)如果ch为操作数,则构造一个值为ch的叶子结点leaf,将leaf进栈,转到(6);
(5)如果ch为操作符,则构造一个值为ch的分支结点p:
(a)如果栈不空,将栈顶元素出栈到_rchild,并让p->rchild=_rchild.否则算法结束,返回转换失败;
(b)如果栈不空,将栈顶元素出栈到_lchild,并让p->lchild=_lchild,否则算法结束,返回转换失败;
(c)将p进栈;
(6)从表达式中读入下一个字符至ch,转到(3).
(7)如果栈空,返回失败;否则将栈顶元素出栈到root;此时如果栈空,则root即为根,返回成功;否则返回失败.
C++伪代码可如下:
Stack stack;
stack.Init( );
cin>>ch;
while(ch != '\0'){
if(ch Is OperData){
Node* leaf = new Node(ch);
stack.Push(leaf);
}
else{
Node* p = new Node(ch);
if(stack.IsEmpty( )) return NULL;
Node* _rchild = stack.Pop( );
p->rchild = _rchild;
if(stack.IsEmpty( )) return NULL;
Node* _lchild = stack.Pop( );
p->lchild = _lchild;
stack.Push(p);
}
cin >> ch;
}
if(stack.IsEmpty()) return NULL;
root = stack.Pop( );
if(!stack.IsEmpty( )) return NULL;
return root;
(1)初始化一个空栈s;
(2)从表达式中读入一个字符到ch;
(3)如果ch为字符串结束符,则转到(7);
(4)如果ch为操作数,则构造一个值为ch的叶子结点leaf,将leaf进栈,转到(6);
(5)如果ch为操作符,则构造一个值为ch的分支结点p:
(a)如果栈不空,将栈顶元素出栈到_rchild,并让p->rchild=_rchild.否则算法结束,返回转换失败;
(b)如果栈不空,将栈顶元素出栈到_lchild,并让p->lchild=_lchild,否则算法结束,返回转换失败;
(c)将p进栈;
(6)从表达式中读入下一个字符至ch,转到(3).
(7)如果栈空,返回失败;否则将栈顶元素出栈到root;此时如果栈空,则root即为根,返回成功;否则返回失败.
C++伪代码可如下:
Stack stack;
stack.Init( );
cin>>ch;
while(ch != '\0'){
if(ch Is OperData){
Node* leaf = new Node(ch);
stack.Push(leaf);
}
else{
Node* p = new Node(ch);
if(stack.IsEmpty( )) return NULL;
Node* _rchild = stack.Pop( );
p->rchild = _rchild;
if(stack.IsEmpty( )) return NULL;
Node* _lchild = stack.Pop( );
p->lchild = _lchild;
stack.Push(p);
}
cin >> ch;
}
if(stack.IsEmpty()) return NULL;
root = stack.Pop( );
if(!stack.IsEmpty( )) return NULL;
return root;
数据结构怎么还原中序表达式的二叉树
数据结构课程设计!算术表达式与二叉树!
数据结构与算法,二叉树,已知前序和中序,求后序,程序怎么设计
数据结构的二叉树问题 假设一棵二叉树的先序序列为ABCDEFGHI,中序序列为BCAEDGHFI,写出其后序序列,并请画
在计算机程序中,二叉树是一种表示数据结构的方法,-层二叉树的结点总数为1;二层二叉树的结点的数
数据结构,关于线索二叉树
数据结构二叉树定义问题
数据结构折半查找的二叉查找树的问题
数据结构的二叉树求深度的问题.
菜鸟求教,数据结构二叉树的深度计算问题
一道数据结构的题二叉树的先序遍历和中序遍历如下:先序遍历:EFHIGJK;中序遍历:HFIEJKG .该二叉树根的右子树
数据结构C递归的方法 前序 中序 后序 交换二叉树每个结点的左孩子和右孩子 结点个数 深度 叶结点个数