编写程序,输出以二叉树表示的算术表达式,若该表达式中含有括号,则在输出时应添上。 |
按先序输入一行字符,其中#表示取消建立子树结点,即所有叶子节点均为#。 |
输出该二叉树所表示的算术表达式(若表达式中含有括号,则在输出时应添上)。 |
*+a(###b#)##c## |
(a+b)*c |
#include <iostream>
#include <stdlib.h>
#include <cstdio>
#define DataType char
using namespace std;
typedef struct BinTreeNode
{
char data;
struct BinTreeNode *lchild;
struct BinTreeNode *rchild;
}BinTree, *PBinTree;
PBinTree CreateBinTree()
{
PBinTree root = (PBinTree)malloc(sizeof(BinTree));
char c = getchar();
if(c == '#')
return NULL;
else
{
root->data = c;
root->lchild = CreateBinTree();
root->rchild = CreateBinTree();
}
return root;
}
void Traversal(PBinTree root)
{
if(root == NULL)
return;
Traversal(root->lchild);
cout << root->data;
Traversal(root->rchild);
}
int main()
{
PBinTree T;
T = CreateBinTree();
Traversal(T);
cout << endl;
}