二叉树c语言程序的运算结果,麻烦截图告诉我,直接运行

/****************************************/
/*不要改动程序结构,请将需要语句填充完整*/
/****************************************/
#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)

                               /*构造二叉树的二叉链表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);/*构造右子树*/ 
   } 
}

温馨提示:答案为网友推荐,仅供参考