思路分析:
这道题考察二叉树的建立以及二叉树的前序遍历、中序遍历和后序遍历。首先按照先序建立二叉树。在这期间需要先建立一个结构体,包括当前节点的值,以及它的左儿子和右儿子。注意这里不能直接存左儿子和右儿子的值,因为每个节点是一个结构体,三个参数是一个整体,因此需要指向地址。
代码实现:
#include<bits/stdc++.h>
using namespace std;
typedef struct node
{
char data;//当前节点的值
struct node *left;//左儿子
struct node *right;//右儿子
}node;
node *tree;
int sum=0;
node *creattree()
{
char ch;
node *t;
cin>>ch;
if(ch=='#')
t=NULL;///如果遇到了‘#’则返回空
else{
t=(node*)malloc(sizeof(node)); //动态分配内存
t->data=ch;//给当前节点赋值
t->left=creattree();//利用递归给左儿子赋值
t->right=creattree();//利用递归给右儿子赋值
}
return t;
}
void qianorder(node *t)//前序遍历
{ if