解题思路:
这道题要求通过给出的先序遍历二叉树的数据,构造二叉树,并输出其算术中缀表达式,即输出二叉树的中序遍历。
二叉树部分知识比较简单好理解,就是要注意二叉树的操作均需要递归完成。
其实我一般习惯是先给存储结构申请空间,用void函数对存储结构进行操作的,但是这个题在读取输入字符前无法确定是否需要申请空间,于是我选择在函数内申请空间。
具体操作见代码,代码中有部分注释。
题解代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct BinTreeNode{
char data;
struct BinTreeNode *left;
struct BinTreeNode *right;
}BinTreeNode;
BinTreeNode *CreatBinTree(){
char data;
BinTreeNode *p;
data = getchar();
if(data!='#'){
p = (BinTreeNode*)malloc(sizeof(BinTreeNode));
p->data = data;
p->left = CreatBinTree();
p->right = CreatBinTree();
return p;
}
else{
return NULL;
}
}
void InOrderOutput(BinTreeNode *T){
if(T->left){
InOrderOutput(T->left);
}
printf("%c",T->data);
if(T->right){
InOrderOutput(T->right);
}
}
int main(){
BinTreeNode *T;
T = CreatBinTree();
InOrderOutput(T);
return 0;
}