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

输入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](2)=(BiTree)malloc(sizeof(BiTNode));
(*T)->data=ch;
CreatBinTree( @@[&(*T)->lchild](2));
CreatBinTree( @@[&(*T)->rchild](2));
}
}
```
答案:
第1空:*T=NULL
第2空:*T
第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](2)=(BiTree)malloc(sizeof(BiTNode));
(*T)->data=ch;
CreatBinTree( @@[&(*T)->lchild](2));
CreatBinTree( @@[&(*T)->rchild](2));
}
}
```
答案:
第1空:*T=NULL
第2空:*T
第3空:&(*T)->lchild
第4空:&(*T)->rchild