数据结构的二叉树中,怎么输入字符序列,建立二叉链表?

求 具体的例子。越详细越好。

第1个回答  推荐于2017-11-28
#include <stdio.h>
#include <stdlib.h>

#define OVERFLOW -1
#define OK 1
#define ERROR 0

typedef int Status;
typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild;//左孩子指针
struct BiTNode *rchild;// 右孩子指针
}BiTNode;
typedef BiTNode *BiTree;

Status CreateBiTree(BiTree &T)
{//按给定的带空指针标记的先序序列建二叉链表
char ch;
ch=getchar();
if (ch==' ') T = NULL;
else {
if (!(T = (BiTNode *)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->data = ch; // 生成根结点
CreateBiTree(T->lchild); // 构造左子树
CreateBiTree(T->rchild); // 构造右子树
}
return OK;
} // CreateBiTree

void Display(TElemType& e)
{
printf("%c\t",e);
}

void InOrderTraverse (BiTree T, void( *visit)(TElemType& e))
{ // 先序遍历二叉树
if (T==NULL) return;
InOrderTraverse(T->lchild, visit); // 遍历左子树
visit(T->data); // 访问根结点
InOrderTraverse(T->rchild, visit); // 遍历右子树
}

void main()
{
BiTree R;
printf("输入带空指针标记的先序序列:(例如AB C D )\n");
CreateBiTree(R);
printf("该二叉树的中序序列为:\n");
InOrderTraverse(R,Display);
printf("\n");
}追问

我按照你的例子输入序列,回车之后木有反应哇,,什么情况 啊?

追答

AB和C之间一个空格,C和D之间2个空格,D后边2个空格再回车

追问

还是木有用啊。。。回车之后它直接就结束了。

追答

以下是vc6下的测试结果:

本回答被提问者采纳