这个题和上一个基本完全相同,同样是按照先序来输入一个带特殊字符的字符串来创建二叉树,然后直接用中序输出就ok了,中序输出也用递归就好
思路就不分析了,直接上代码ojbk,就酱(づ ̄3 ̄)づ╭❤~
#include <stdio.h>
#include <stdlib.h>
typedef BinTree
{ //定义二叉链表来储存二叉树
char data;
BinTree *left;
BinTree *right;
}BinTree;
BinTree *creat()
{ //输入特殊的字符串来创建二叉树
char s;
BinTree *cur;
s=getchar ();
if(s=='#')//如果是#号那么这一支为NULL
return NULL;
else
{
cur=(BinTree)malloc(sizeof(BinTree));
cur->data=s; //否则这个元素就是这棵树的根节点
cur->left=creat(); //依此递归创建左子树和右子树
cur->right=creat();
return cur;
}
}
void inord(BinTree *T)
{//中序输出二叉树
if (T->left)
inord (T->left); //递归输出左子树
printf("%c",T->data);//输出根节点
if (T->right)
inord (T->right); //递归输出右子树
}
int main()
{
BinTree *T;
T=creat();
inord(T);
return 0;
}