程序填空题:扩展的先序遍历序列创建二叉树
以扩展的先序遍历建立二叉树,根结点的地址通过函数值返回。
例如
输入AB#DF##G##C##,建立二叉树如下图,

输出该二叉树的先序遍历序列ABDFGC。
```
#include
#include
typedef char ElementType;
typedef struct BiTNode{
ElementType data;
struct BiTNode *lchild;
struct BiTNode *rchild;
}BiTNode,*BiTree;
BiTree CreatBinTree();
void preorder( BiTree T );
int main()
{
BiTree T = CreatBinTree();
preorder( T );
return 0;
}
void preorder( BiTree T )
{
if(T)
{
printf("%c",T->data);
preorder(T->lchild);
preorder(T->rchild);
}
}
BiTree CreatBinTree()
{
char ch;BiTree T;
scanf("%c",&ch);
if(ch=='#') return @@[NULL](2);
T=@@[(BiTree)malloc(sizeof(BiTNode))](2);
T->data=ch;
T->lchild=@@[CreatBinTree()](2);
T->rchild=@@[CreatBinTree()](2);
return T;
}
```
答案:
第1空:NULL
第2空:(BiTree)malloc(sizeof(BiTNode))
第3空:CreatBinTree()
第4空:CreatBinTree()
例如
输入AB#DF##G##C##,建立二叉树如下图,

输出该二叉树的先序遍历序列ABDFGC。
```
#include
#include
typedef char ElementType;
typedef struct BiTNode{
ElementType data;
struct BiTNode *lchild;
struct BiTNode *rchild;
}BiTNode,*BiTree;
BiTree CreatBinTree();
void preorder( BiTree T );
int main()
{
BiTree T = CreatBinTree();
preorder( T );
return 0;
}
void preorder( BiTree T )
{
if(T)
{
printf("%c",T->data);
preorder(T->lchild);
preorder(T->rchild);
}
}
BiTree CreatBinTree()
{
char ch;BiTree T;
scanf("%c",&ch);
if(ch=='#') return @@[NULL](2);
T=@@[(BiTree)malloc(sizeof(BiTNode))](2);
T->data=ch;
T->lchild=@@[CreatBinTree()](2);
T->rchild=@@[CreatBinTree()](2);
return T;
}
```
答案:
第1空:NULL
第2空:(BiTree)malloc(sizeof(BiTNode))
第3空:CreatBinTree()
第4空:CreatBinTree()