表达式树的创建与输出
编一个程序,读入先序遍历字符串,根据此字符串建立一棵二叉树(以指针方式存储),请注意的是,我们保证该树一定是表达式树(见教材5.2 5.8)。
例如下面的先序遍历字符串:
| + 13 # # * 5 # # 9 # #
运算符只可能是加减乘除,数值为小于等于100,各结点用空格分开,其中“#”代表空树。
建立起此二叉树以后,再按要求输出二叉树。
输入
输入由多组测试数据组成。
每组数据包含一行字符串,即表达式树的先序遍历序列,字符串长度大于0且不超过100。
输出
对于每组数据,输出一行,内容是该表达式树的全括号表达式,见示例。
样例输入 Copy
| + 13 # # * 5 # # 9 # #
| * + 13 # # 5 # # 9 # #
样例输出 Copy
(13+(5 * 9))
((13+5) * 9)
思路:题目说的全括号是指先运算的就有括号,从(13+(5 * 9))中能看出来,本来5*9是不需要括号的,所以题目就很简单了,只要判断根节点为符号时在他的左右子树输出时输出括号。
#include<iostream>//
#include<cstring>
#define infotype char
using namespace std;
typedef struct BinaryTreeNode
{
infotype date[5];
BinaryTreeNode *Lchild,*Rchild;
}BiTNode