题目:
思路:输入的时候是先序,先写一个先序创建二叉树的函数,这个题要求按正常顺序输出一个表达式。我想起来之前做过的一道题:逆波兰式,这个题的输入实际上就是一个前序表达式。结合那个题的思路就能发现把刚刚建立的二叉树按中序遍历输出就能的到中序表达式。
实现:
#include<iostream>
using namespace std;
typedef struct BiNode{
char data;
struct BiNode *lchild, *rchild;
}BiNode, *BiTree;
BiTree PreOrder_CreateBiTree() //递归先序创建二叉树
{
char c = getchar();
if(c == '#') return NULL;
else{
BiTree node;
node = (BiNode*)malloc(sizeof(BiNode));
node->data = c;
node->lchild = PreOrder_CreateBiTree();
node->rchild = PreOrder_CreateBiTree();
return node;
}
}
void InOrder_OutputBiTree(BiTree root)//中序输出二叉树
{
if(root