程序填空题:扩展的先序遍历序列创建二叉树-引用参数
以扩展的先序遍历建立二叉树,根结点的地址使用引用参数。
例如

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

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