/****************************************/
/*不要改动程序结构,请将需要语句填充完整*/
/****************************************/
#include <stdio.h>
#include <stdlib.h>
#define MAX_BITREE_SIZE 20
typedef struct BiTNode{
char data;
struct BiTNode *lchild, *rchild;/*左右孩子指针*/
}BiTNode, *BiTree;
void Create_BiTree(BiTree *T)
{
/*构造二叉树的二叉链表T */
char ch;
ch=getchar();
if(ch=='@') *T=NULL;
else{
*T=(BiTree)malloc(sizeof(BiTNode));
(*T)->data=ch; /*生成根结点*/
Create_BiTree(&(*T)->lchild);/*构造左子树*/
Create_BiTree(&(*T)->rchild);/*构造右子树*/
}
}
void PreOrder(BiTree T) /*先序遍历二叉树*/
{ if(T)
{
printf("%3c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BiTree T) /*中序遍历二叉树*/
{ if(T)
{
InOrder(T->lchild);
printf("%3c",T->data);
InOrder(T->rchild);
}
}
void PostOrder(BiTree T) /*后序遍历二叉树*/
{ if(T)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%3c",T->data);
}
}
main()
{
BiTree T;
printf("\ninput PreOrder str : ");
Create_BiTree(&T);
printf("\n");
printf("\nPreOrder list of T : ");
PreOrder(T);
printf("\nInOrder list of T : ");
InOrder(T);
printf("\nPostOrder list of T : ");
PostOrder(T);
printf("\n ");
}
这个问题是需要输入序列的,不同的输入序列输出是不同的。下面仅给出一种可能的情况。
追问序列中的@符号是什么意思啊,我不太懂
追答如果仔细看了代码,就会知道(见代码里面的注释)
void Create_BiTree(BiTree *T)